使用 require() 对性能有影响吗?
Does using require() has impact on the performance?
当模块在 node.js 中被调用两次时,它会返回相同的对象,因为 require()
缓存了之前的调用。
第二个要求有多快?连续使用 require()
会导致性能瓶颈吗?
所以假设我有一个这样的模块:
var util = require("util");
module.exports = function (param, logger) {
var module = {};
module.toString = function() {
return util.format("My nicely formatted text");
}
return module;
};
toString()
将被多次调用。如果我在 util
变量中省略 util 模块的保存并每次都需要它,会发生什么情况,如下所示:
return require("util").format("My nicely formatted text");
这会使我的应用程序变慢吗?
对 require()
的调用已缓存,因此两者之间应该不会有太大差异。但是,我会建议在文件顶部加载所有模块。你的应用程序的启动会稍微慢一些,但无论如何应该不会有太大的不同,而且它更具可读性。
此外,对 require()
的调用是阻塞的,因此当它们被处理时,Node 不会 运行 处理任何其他内容。这就是为什么您应该将所有要求放在首位的另一个原因,这样您就不会最终阻碍您的应用程序进一步发展。
当模块在 node.js 中被调用两次时,它会返回相同的对象,因为 require()
缓存了之前的调用。
第二个要求有多快?连续使用 require()
会导致性能瓶颈吗?
所以假设我有一个这样的模块:
var util = require("util");
module.exports = function (param, logger) {
var module = {};
module.toString = function() {
return util.format("My nicely formatted text");
}
return module;
};
toString()
将被多次调用。如果我在 util
变量中省略 util 模块的保存并每次都需要它,会发生什么情况,如下所示:
return require("util").format("My nicely formatted text");
这会使我的应用程序变慢吗?
对 require()
的调用已缓存,因此两者之间应该不会有太大差异。但是,我会建议在文件顶部加载所有模块。你的应用程序的启动会稍微慢一些,但无论如何应该不会有太大的不同,而且它更具可读性。
此外,对 require()
的调用是阻塞的,因此当它们被处理时,Node 不会 运行 处理任何其他内容。这就是为什么您应该将所有要求放在首位的另一个原因,这样您就不会最终阻碍您的应用程序进一步发展。