括号是否重要?

时间:2013-06-20 20:24:16

标签: javascript performance increment decrement

鉴于此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);
}

第二个版本是否可以更好地优化,或者是什么原因?

2 个答案:

答案 0 :(得分:1)

我相信在第二次测试中,您忘记将j重置为1E4,或者您打算在其中一个循环中使用i。见这个测试:

http://jsperf.com/bit-increment/2

我在第一个循环中使用i添加了一个代码段,在第二个循环中添加了j,其执行速度与第一个测试一样快。

答案 1 :(得分:1)

在第二个代码示例中,您使用j作为两个循环中的迭代器。