2011-07-09 55 views
4

这里的测试:http://jsperf.com/forloopspeed为什么Firefox中的for(var i = 100; i--; {{}}比(var i = 100; i - > 0;){}慢得多(70%)?

正如你所看到的,所不同的是巨大的Firefox,目前在Safari中一个较小的程度上,并没有在Chrome和Opera。

中类似的事情发生的,而环太:http://jsperf.com/whileloopspeed

+2

你确定你需要知道为什么吗?你可以将你的发现提交给firefox bugtracker,并在推出时享受修复... – Szocske

+0

够公平的。只是好奇我猜。 – zjmiller

+0

没有真正相关,但最近我遇到了另一个奇怪的问题:http://jsperf.com/array-vs-object-jamie/3为什么Firefox通过索引访问数组元素比Chrome要快五倍? –

回答

2

我的猜测是,检查i(数字)是否是falsy值比检查true/false(比较的结果)计算更昂贵。

2

我想在表达结果上执行的内部ToBoolean()与给出boolean时相比,在给出number时稍慢。

In this test当使用!!从布尔值转换为布尔值时,性能会有差异。

+0

您的测试很有趣,但差异很小,并且在浏览器中看起来很相似,所以我不确定它如何解释为什么Firefox在我的初始测试方面与其他浏览器的行为表现如此不同。 – zjmiller

+0

@zjmiller:我的回答当然是猜测。我不认为你会在这里得到太多的人与知识的执行提供一个确切的原因。但是谁知道?我认为使用Mozilla提交错误报告将为解决您的好奇心留下更大的潜力。 – user113716

相关问题