【发布时间】:2016-03-25 19:09:47
【问题描述】:
大家好,谁能告诉我为什么我在这个 JSPerf 中的代码似乎表明 for 循环实际上比 while 循环快?
我什至将值降低到零,for 似乎仍然表现出色?
http://jsperf.com/html-canvas-performance
为了记录,我正在制作一个 HTML / Canvas 游戏,我需要遍历实体以进行渲染。
编辑:代码 -
编辑 如果不清楚问题是什么; “for 似乎仍然表现出色?”
Benchmark.prototype.setup = function() {
var e = [];
var i = 100;
while(i--) e.push(Math.random() * -1 << 1);
};
Benchmark.prototype.teardown = function() {
e.length = 0;
};
//WHILE
var i = e.length;
while(i--) e[i] *= 123;
//FOR
for(var i = 0; i < e.length; i++) e[i] *= 123;
【问题讨论】:
-
请把代码贴在这里
-
我怀疑 JS 编译器有一个优化,可以检测常见的
for循环习语。 -
我想它也可能是我的浏览器。有什么方法可以跨多个测试?
-
很抱歉,您是无法阅读@meagar 还是您只是度过了糟糕的一天? “为什么 THIS 代码的性能不如 THAT 代码是一个非常明确的问题陈述,并且运行 itself 的 JSPerf 的链接是就繁殖而言,您可以尽可能清楚地了解。我是在这里服用疯狂的药丸,还是您在种地?-由于问题的性质,问题本身中的代码将没有用朝着答案的方向前进,因为它是特定于机器的……尽量不要太拘泥于规则,关键是有用。
-
@AndrueAnderson 您实际上并没有在代码中包含一个简短的、独立的、完整的示例。您已经包含了 一些 代码,但我们无法在不依赖外部页面的情况下实际执行它。请重新阅读结束原因:...必须在问题本身中包含所需的行为、特定问题或错误以及重现它所需的最短代码。* 取决于关闭的问题意义的站点链接在这里是题外话。
标签: javascript performance loops for-loop while-loop