很多 Javascript 性能指南倾向于强调两点:
- 保持在范围内;在每个范围内逐步查找变量的成本很高。
- 不要通过不断创建不必要的变量来滥用垃圾收集器。
对于以 60fps 或类似高速运行的程序,性能有差异吗? JSPerf在我的系统上似乎介于两者之间,所以我想更多地了解如何针对此类内容进行优化。考虑以下两个代码示例:
var t0;
function doSomethingGlobal() {
t0 = getWhatever();
t0.func1();
t0.func2();
}
诗歌
function doSomethingLocal() {
var t0 = getWhatever();
t0.func1();
t0.func2();
}
最佳答案
我认为这取决于您访问全局变量的频率,以及全局变量在执行上下文中的嵌套深度。例如,从一个“更高”的执行上下文访问变量比从更高的十个级别访问变量要快(取决于 JS 引擎,我想结果和引擎优化会有所不同)。
我已经 modified your test a bit对全局变量进行 50 次访问,结果很显着,在这个特定测试中(我在 Firefox 19.0 和 Chrome 26 中进行的简短测试),本地访问快了约 5 倍。
对于所有与性能相关的问题,经验法则只能让你走到这一步。 您必须对您的代码进行基准测试,并进行对您的代码有意义的优化。
关于javascript - 对于 Javascript 游戏引擎,重新使用全局变量比制作本地变量更有效还是更不有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15829147/