我有一个使用 mocha.js
的测试套件,我运行它以确保一切正常。对于我需要的每个模块,我注意到测试时间增加了大约 100 毫秒。这是在具有 8GB 内存的强大四核机器上实现的。
调用 require
的实际成本是多少?它会影响应用程序性能还是只影响测试性能?
如果相关, Node 版本为 0.8.11
。
最佳答案
Require 非常昂贵,因为它不会在任何静态分析期间执行。它需要做几件事,同步,在未定义的时间段内阻塞您的程序:
- 它需要找到您需要的模块,这可能会导致大量文件操作 - 包括路径搜索、统计、打开。
- 它需要读取 javascript 文件、解析它、编译它的一部分,并在执行期间需要它遇到的任何依赖项 - 所以还是第一点。
您不应该在任何非顶级代码中使用 require
,在测试之前要求所有内容,除非您准备好付出执行时间增加的代价。
在非常古老的 Node.JS 中曾经有 require
的异步版本,不幸的是现在似乎没有了。
关于unit-testing - node.js 中 require() 的成本是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12836030/