Javascript 如何计算Node.js包的加载时间惩罚?

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'),并测量时间差,我会测

为了提供一些背景知识,我想学习如何优化运行在Google云功能上的Node.js Express应用程序的冷启动时间

到目前为止,我了解到冷启动的最大代价是使用require语句加载依赖项。作为一名软件工程师,科学头脑告诉我,它将基于文件的数量、文件的大小、依赖关系的数量、缓存。然而,也许优化更像是一门艺术而非科学,因此,任何来自您自身经验的建议或反馈都是最受欢迎的

我的问题是

  • 如果我用两个
    process.hrtime()
    语句包围一个
    const x=require('x')
    ,并测量时间差,我会测量整个包加载时间“x”的加载时间吗

  • 如果是,这是否包括加载此包中的所有文件?这个包需要的依赖关系如何?何时加载(这导致了我的第三个问题3)

  • 如果require语句位于条件块内,例如,
    If(condition){const x=require('x');}
    ,那么它在哪一点上被“加载”,以及“加载”的真正含义是什么(即在内存中、解析、执行等)?它会在运行时到达语句的那一刻“加载”(或不加载),还是无论程序何时开始执行,
    require
    都会发生


  • 是的,
    require
    只是一个普通函数,它要么返回内存中的模块,要么加载内存中的模块,这意味着读取文件、解析文件并执行它(当然,它可能需要其他依赖项)

    对其进行基准测试没有问题(只要确保在缓存模块时测量文件的第一个需求即可)

    如果
    require
    在您的文件中,但没有执行(例如,因为它位于
    If
    语句后面),则它不会比不在您的文件中产生更大的效果。并且在到达语句之前不会发生加载