【发布时间】:2018-05-09 07:45:21
【问题描述】:
为了提供一些背景信息,我有兴趣了解如何优化在 Google Cloud Function 上运行的 Node.js Express 应用程序的冷启动时间。
到目前为止,我了解到冷启动的最大损失是使用 require 语句加载依赖项。作为一名软件工程师,科学头脑告诉我它将基于文件的数量、文件的大小、依赖项的数量、缓存。但是,也许优化更像是一门艺术而不是科学,因此非常感谢您从自己的经验中获得的任何指示或反馈。
我的问题是
如果我用两个
process.hrtime()语句包围const x = require('x')并测量时间差,我会测量“x”的整个包加载时间的加载时间吗?如果是这样,这是否包括在此包中加载所有文件?这个包需要的依赖项怎么样——它们是什么时候加载的(这引出了我的第三个问题 3)。
如果 require 语句位于条件块内,例如
if (condition) { const x = require('x'); },它在什么时候“加载”以及“加载”的真正含义是什么(即在内存中,解析,执行等)?它会在运行时到达(或未到达)语句的那一刻“加载”,还是无论程序何时开始执行都会发生require?
【问题讨论】:
标签: javascript node.js google-cloud-functions