为什么(var i = 100; i--;){}比Firefox中的(var i = 100; i - > 0;){}慢得多(70%)?

时间:2011-07-09 21:22:10

标签: javascript firefox

以下是测试:http://jsperf.com/forloopspeed

正如您所看到的,Firefox中的差异很大,在Safari中出现的程度要小得多,而在Chrome和Opera中则不存在。

类似的事情也发生在while循环中:http://jsperf.com/whileloopspeed

3 个答案:

答案 0 :(得分:2)

我的猜测是,检查i(数字)是否为假值比检查true / false(比较结果)的计算成本更高。

答案 1 :(得分:2)

我认为,与给定ToBoolean()相比,在给出number时,对表达式结果执行的内部boolean会慢一点。

In this test使用!!从布尔值与数字转换为布尔值时,性能会有所不同。

答案 2 :(得分:2)

这看起来像Jaegermonkey特有的一些问题。如果我在Tracemonkey下运行测试,效果就会消失。

提起https://bugzilla.mozilla.org/show_bug.cgi?id=670493