2

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

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

4

2 回答 2

1

我相信在第二个测试中,您要么忘记重置j1E4,要么打算i在其中一个循环中使用 an 。看这个测试:

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

i我在第一个循环和第二个循环中添加了一个片段j,它的执行速度与第一个测试一样快。

于 2013-06-20T20:41:41.780 回答
1

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

于 2013-06-20T20:42:51.233 回答