如果我通过一个variables太多require()会发生什么?

我在我的NodeJS文件夹中传递playersvariables3个级别。

第一个文件是server.js,它们有

 var players = {}; require('./routines')(players); 

在例程文件夹内,这是index.js:

 module.exports = function (players) { var addHp = require('./addHp')(players); } 

addHp.js里面

 module.exports = function (players) { var addHp = setInterval ( function () { for (var player in players) { //... } }, 30000); } 

我想知道这样做的performance是什么。 players参考仅在服务器初始化时发送? 是否有太多参考文献的缺点? 除了不好的做法,假设我有100个要求内线要求接players ,我会有问题吗?

从性能angular度来看,这真的不应该是一个问题。 这不是我们正在执行循环中requires一百万次。 甚至一个已经加载的模块的require在查找成本的情况下可能是昂贵的,但是它必须在一些密集的循环中才能成为一个问题。

此外,关于通过参考这个players反对三个函数调用,它实际上可能比有一些全球性的便宜。 与普遍的看法相反,把一个更多的全局variables的内容复制到本地范围通常是比全局variables便宜或者便宜的(假设副本是便宜的,这可以作为参考)。 这是因为从编译器的angular度来看,像这样的东西:

 module.exports = function (players) { var addHp = require('./addHp')(players); } 

…它可以假定这个players参数(本地函数)在此期间不会引用其他任何东西,因为它只能在函数内部看到它在此期间不会被分配给其他任何东西。

因此,编译器可以更容易地应用优化,在该优化中,可以将该players引用一次移动到寄存器中,并将其保存在那里,而不必每次在该函数内访问时从较慢的内存forms重新加载它。 当然,即使players是全球性的,一个非常积极的优化者仍然可以避免,但是做出这样的假设更加困难,并且应该可以安全地说,这里的参考文献的本地副本将会更快或更快。