为了给出一些背景,我有兴趣学习如何优化运行在Google函数上的Node.js Express应用程序的冷启动时间。
到目前为止,我已经了解到冷启动的最大损失是使用require语句加载依赖项。作为一名软件工程师,一位科学头脑告诉我,它将基于文件的数量、文件的大小、依赖项的数量、缓存。然而,也许优化更多的是一门艺术而不是科学,所以任何来自你自己经验的建议或反馈都是最值得赞赏的。
我的问题是
const x = require('x')语句包围一个process.hrtime()并测量时间差,我会测量整个包加载时间'x‘吗?if (condition) { const x = require('x'); } )中,那么它在什么时候被‘加载’,而‘加载’真正意味着什么(即在内存中、解析的、执行的等等)?在运行时,它会“加载”到语句(或未到达),还是不管程序何时开始执行,require是否会发生?发布于 2018-05-09 07:47:37
是的,require只是一个普通的函数,如果它在内存中,或者加载它,这意味着读取文件、解析它并执行它(当然,它可能需要其他依赖项)。
对它进行基准测试是没有问题的(只需确保您测量文件的第一个需求,因为模块是缓存的)。
如果require在您的文件中,但没有执行(例如,因为它在if语句后面),它将不会比不在您的文件中有更多的效果。在到达语句之前加载是不会发生的。
https://stackoverflow.com/questions/50248097
复制相似问题