【问题标题】:What is the cost of require() in node.js?node.js 中 require() 的成本是多少?
【发布时间】:2012-10-01 21:49:21
【问题描述】:

我有一个使用mocha.js 的测试套件,我运行它以确保一切正常。对于我需要的每个模块,我注意到测试时间增加了大约 100 毫秒。这是在具有 8GB 内存的强大四核机器上实现的。

调用require 的实际成本是多少?它会影响应用程序性能还是仅测试性能?

如果相关的话,节点的版本是0.8.11

【问题讨论】:

    标签: unit-testing node.js requirejs require mocha.js


    【解决方案1】:

    Require 成本很高,因为它不会在任何静态分析期间执行。它需要做几件事,它会同步,在未定义的时间段内阻塞你的程序:

    • 它需要找到您需要的模块,这可能会导致大量文件操作 - 包括路径搜索、统计、打开。
    • 它需要读取 javascript 文件,解析它,编译它的一部分,并在执行期间 require 它遇到的任何依赖项 - 所以还是第一点。

    您不应在任何非顶级代码中使用require,除非您准备为增加执行时间付出代价,否则在测试之前要求所有内容。

    在非常古老的 Node.JS 中曾经有一个异步版本的 require,不幸的是它似乎不再存在了。

    【讨论】:

    • 请注意,一旦一个模块被require'd,它就会被缓存,随后对同一模块的require() 调用将非常快,因为它不必重新加载或编译。
    猜你喜欢
    • 2020-10-10
    • 2012-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    相关资源
    最近更新 更多