2013-06-20 52 views
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); 
} 

是第二個版本更優化的,或者是什麼原因?

+1

你在第二個例子中重置'j'的某處嗎? – imreal

回答

1

在第二個代碼示例中,您將j用作兩個循環中的迭代器。

1

我相信在第二次測試中,您忘記將j重置爲1E4,或者您打算在其中一個循環中使用i。看到這個測試:

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

我添加使用第一循環i和第二j一個片段,並執行一樣快,因爲第一次測試。

+0

謝謝! :)當我怎麼會想念:P – C5H8NNaO4

+0

我會接受他的答案,因爲這是他的第一個答案,只有一點點以後 – C5H8NNaO4