什么是Javascript中的一堆小setInterval循环,还是一个大的?

时间:2010-04-27 05:27:11

标签: javascript optimization loops performance

只是想知道它是否值得制作一个单片循环函数或只是添加循环是他们需要的。

大循环选项只是一个回调循环,通过添加函数动态添加。

添加一个函数看起来像这样

setLoop(function(){
    alert('hahaha! I\'m a really annoying loop that bugs you every tenth of a second');
});

setLoop会将函数添加到单片循环中。

所以在性能上是值得的,还是我应该使用setInterval坚持很多小循环?

继承游戏

http://thinktankdesign.ca/metropolis/

及其所有库

http://thinktankdesign.ca/metropolis/scripts/base.js

http://thinktankdesign.ca/metropolis/scripts/menu.js

http://thinktankdesign.ca/metropolis/scripts/grid.js

http://thinktankdesign.ca/metropolis/scripts/cursor.js

http://thinktankdesign.ca/metropolis/scripts/game_logic/controls.js

http://thinktankdesign.ca/metropolis/scripts/game_logic/automata.js

如果我坚持使用单个循环,由于动画循环的数量,会有数千个循环。

游戏是一个塔式建筑商和复杂的东西,如电梯和汽车/ peds。更不用说自动机的循环,控制诸如VIP和火灾等事件。功能(一年或两年)时,它会像Sim Tower一样,而是iso-metric而不是侧卷轴。

3 个答案:

答案 0 :(得分:3)

将它们全部分开安排意味着在发生的一些子任务和其他子任务之间可能发生事情(如处理用户交互事件等)。使用一个大的单片循环,循环的每个循环将在该循环上执行所有,然后将控制权返回给用户输入。因此,如果你真的做了很多事情,最好独立安排它们,让浏览器“更聪明”地做什么。

例外情况是,如果你真的打算/要求在同一个“周期”中发生的所有事情都没有相互抵消,在这种情况下需要“大循环”方法来保证它们全部触发完全相同的时间(或至少,与执行时间允许的一样紧密)。

答案 1 :(得分:2)

我想你可以只使用setInterval,保持各个循环控制每个循环会给你更好的灵活性,除非每个单项需要排队,但即使在那一点我也看不到你会从中获得性能提升。

答案 2 :(得分:0)

如果没有足够的详细信息,您的问题无法正确回答:

  • 你的整体循环有多大?
  • 您希望添加多少个小循环?
  • 那些小环路有多小?
  • 你试图通过循环完成什么?
  • 小循环是否会相互影响,例如改变变量关系或闭包值?
  • 是否会期望循环冗余能够捕获缺失,否则会被逻辑考虑转义?

如果没有足够的细节,每个答案都是正确的,从而使你的问题毫无意义。