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

Unit testing node.js中require()的成本是多少?,unit-testing,node.js,requirejs,require,mocha.js,Unit Testing,Node.js,Requirejs,Require,Mocha.js,我有一个使用mocha.js的测试套件,我运行该套件以确保一切正常运行。对于我需要的每个模块,我注意到测试时间增加了大约100ms。这是一台功能强大的四核机器,内存为8GB 调用require的实际成本是多少?它会影响应用程序性能还是仅测试性能 如果相关的话,节点的版本是0.8.11。Require的成本非常高,因为它在任何静态分析期间都不会执行。它需要做几件事,同步执行,在未定义的时间段内阻止您的程序: 它需要找到您需要的模块,该模块会导致大量文件操作,包括路径搜索、统计、打开 它需要读取j

我有一个使用
mocha.js
的测试套件,我运行该套件以确保一切正常运行。对于我需要的每个模块,我注意到测试时间增加了大约100ms。这是一台功能强大的四核机器,内存为8GB

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


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

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

  • 它需要找到您需要的模块,该模块会导致大量文件操作,包括路径搜索、统计、打开
  • 它需要读取javascript文件,解析它,编译它的一部分,并且在执行过程中需要它遇到的任何依赖项,这也是第一点
您不应该在任何非顶级代码中使用
require
,在测试之前要求所有内容,除非您准备为增加执行时间付出代价


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

注意,一旦一个模块被
require
'd缓存,它就会被缓存,并且随后对同一模块调用
require()
会非常快,因为它不必再次加载或编译。