Javascript,计数器和实时应用程序

时间:2015-02-03 22:35:00

标签: javascript performance

我目前正在开发游戏,我决定使用javascript制作原型。在开发过程中,我注意到我以这种方式使用了很多计数器:

function update() {
   for(var i = 0; i < n; i++) {
       // do stuff
   }

   for(var i = 0; i < m; i++) {
       // do other stuff
   }
}

请记住,这是一个实时应用程序,因此更新功能每秒执行近60次,我们可以说我创建了很多变量。我想知道这段代码会如何影响性能(javascript引擎在这里做了一些优化吗?)以及垃圾收集器在这种情况下的行为(我甚至不知道GC如何管理原始类型......) 。

现在我将代码更改为:

var counters = {};

function update() {
   for(counters['taskA'] = 0; counters['taskA'] < n; counters['taskA']++) {
       // do stuff
   }

   for(counters['taskB'] = 0; counters['taskB'] < m; counters['taskB']++) {
       // do other stuff
   }
}

这段代码有什么不同吗?

1 个答案:

答案 0 :(得分:0)

不应有任何显着的性能差异。但是,如果counters变量位于全局范围内,则不会对其进行垃圾回收。它只会在超出范围时获得GCed,所以如果它在另一个大部分都很好的函数中。

在您的第一个示例中,i变量肯定会在update函数中得到GC。