unit-testing - node.js 中 require() 的成本是多少?

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

我有一个使用 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/

相关文章:

javascript - 在 socket.io 消息后触发莫名其妙的页面刷新

java - 如何测试MultiChoiceItems android对话框

unit-testing - 如何从 TFS 2015 中的单元测试中获取调试输出

javascript - Node js/express (localhost) 上未定义的 Cookie

javascript - Parse.com CloudCode,无法调试错误

angularjs - Angular 无法实例化模块

javascript - 无法在 Visual Studio Code 中使用 TypeScript 设置 Angular 2

javascript - require.js 和backbone.js 出现 Uncaught TypeError

Java (JUnit 4.xx) 如何使用模拟工具强制调用 try block 中的 void 方法异常?

java - TestNG 和 JUnit 执行之间的区别