鉴于此JSPerf测试
为什么这会更快
var x;var i = 1E4;var j = 1E4;
for (; i-- > -1;) {
x = -~x;
}
for (; j-- > -1;) {
x = ~ - x;
}
比这个?
var x;var i = 1E4;var j = 1E4;
for (; j-- > -1;) {
x = -1 * ~x;
}
for (; j-- > -1;) {
x = ~ (-1 * x);
}
第二个版本是否可以更好地优化,或者是什么原因?
答案 0 :(得分:1)
我相信在第二次测试中,您忘记将j
重置为1E4
,或者您打算在其中一个循环中使用i
。见这个测试:
http://jsperf.com/bit-increment/2
我在第一个循环中使用i
添加了一个代码段,在第二个循环中添加了j
,其执行速度与第一个测试一样快。
答案 1 :(得分:1)
在第二个代码示例中,您使用j作为两个循环中的迭代器。