4

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

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

节点的版本0.8.11是否相关。

4

1 回答 1

7

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

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

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

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

于 2012-10-11T10:07:34.563 回答