Как рассчитать штраф за время загрузки пакета Node.js? - PullRequest
0 голосов
/ 09 мая 2018

Для контекста мне интересно узнать, как оптимизировать время холодного запуска приложения Node.js Express, работающего на облачной функции Google.

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

Мои вопросы

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

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

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

1 Ответ

0 голосов
/ 09 мая 2018

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...