Как рассчитать штраф за время загрузки пакета Node.js?

1

Чтобы дать некоторый контекст, мне интересно узнать, как оптимизировать время холодного запуска приложения Node.js Express, работающего на Google Cloud Function.

До сих пор я узнал, что самый большой штраф за холодные ботинки - это загрузка зависимостей с использованием запросов. Как инженер-программист научный ум говорит мне, что он будет основан на количестве файлов, размере файлов, количестве зависимостей, кешировании. Однако, возможно, оптимизация - это скорее искусство, чем наука, поэтому любые рекомендации или отзывы от вашего собственного опыта наиболее ценятся.

Мои вопросы:

  1. Если я окружаю const x = require('x') с двумя операторами process.hrtime() и измеряю разницу во времени, я буду измерять время загрузки для всего времени загрузки пакета "x"?

  2. Если это так, включает ли это загрузку всех файлов в этом пакете? Как насчет зависимостей этого пакета requires-, когда они загружаются (что приводит к третьему вопросу 3).

  3. Если требование require находится внутри условного блока, например if (condition) { const x = require('x'); } if (condition) { const x = require('x'); }, в какой момент он "загружен" и что означает "загруженный" (т.е. в памяти, анализируется, выполняется и т.д.)? Будет ли это нагрузка "на данный момент во время выполнения достигается утверждение (или нет), или будет require происходить независимо, когда программа начинает выполнение?

Теги:
google-cloud-functions

1 ответ

2
Лучший ответ

Да, require - это просто нормальная функция, которая возвращает модуль, если он в памяти, или загружает его, если это не так, что означает чтение файла, его анализ и выполнение (и, конечно, это может потребовать других зависимостей).

Там нет проблем с бенчмаркингом (просто убедитесь, что вы измеряете первое требование файла, так как модуль кэшируется).

Если require находится в вашем файле, но не выполняется (например, потому что оно находится за оператором if), оно не будет иметь никакого эффекта, чем если бы оно не было в вашем файле. И загрузка не произойдет до того, как будет достигнуто утверждение.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню