Javascript 如何计算Node.js包的加载时间惩罚?
为了提供一些背景知识,我想学习如何优化运行在Google云功能上的Node.js Express应用程序的冷启动时间 到目前为止,我了解到冷启动的最大代价是使用require语句加载依赖项。作为一名软件工程师,科学头脑告诉我,它将基于文件的数量、文件的大小、依赖关系的数量、缓存。然而,也许优化更像是一门艺术而非科学,因此,任何来自您自身经验的建议或反馈都是最受欢迎的 我的问题是Javascript 如何计算Node.js包的加载时间惩罚?,javascript,node.js,google-cloud-functions,Javascript,Node.js,Google Cloud Functions,为了提供一些背景知识,我想学习如何优化运行在Google云功能上的Node.js Express应用程序的冷启动时间 到目前为止,我了解到冷启动的最大代价是使用require语句加载依赖项。作为一名软件工程师,科学头脑告诉我,它将基于文件的数量、文件的大小、依赖关系的数量、缓存。然而,也许优化更像是一门艺术而非科学,因此,任何来自您自身经验的建议或反馈都是最受欢迎的 我的问题是 如果我用两个process.hrtime()语句包围一个const x=require('x'),并测量时间差,我会测
process.hrtime()
语句包围一个const x=require('x')
,并测量时间差,我会测量整个包加载时间“x”的加载时间吗If(condition){const x=require('x');}
,那么它在哪一点上被“加载”,以及“加载”的真正含义是什么(即在内存中、解析、执行等)?它会在运行时到达语句的那一刻“加载”(或不加载),还是无论程序何时开始执行,require
都会发生是的,
require
只是一个普通函数,它要么返回内存中的模块,要么加载内存中的模块,这意味着读取文件、解析文件并执行它(当然,它可能需要其他依赖项)
对其进行基准测试没有问题(只要确保在缓存模块时测量文件的第一个需求即可)
如果require
在您的文件中,但没有执行(例如,因为它位于If
语句后面),则它不会比不在您的文件中产生更大的效果。并且在到达语句之前不会发生加载