2011-10-03 64 views
1

對導航中的上一個鏈接執行綁定。如果我們處於第一個位置,不要爲上一個鏈接做同樣的事情。我正在做一個「!=」不等於測試,但意識到它可能是一個「>」大於。在「>」和「!=」之間JavaScript有性能差異嗎?

然後我想,是一個更快?

if (numberToCheck != 0) { 
    //doSomething(); 
} 

if (numberToCheck > 0) { 
    //doSomething(); 
} 
+10

微優化!做任何最可讀的事情。速度差異可以忽略不計,並取決於實施。 – davin

+3

他們不這樣做!如果numberToCheck爲負數? –

+0

嘿,完全。只是好奇,如果有一個明確的答案。 – folktrash

回答

4

性能問題應通過測量解決,而不是猜測。

你可以在這裏看到http://jsperf.com/inequality-vs-greater-than。此測試的結果(在我的電腦上)因瀏覽器而異。有些不平等的情況會更快。有些人的速度比較快。您可能會在代碼的其他方面發現更大的速度差異。

如果您想測試與我在測試中放置的東西稍有不同的東西,只需添加您自己的測試以進行比較。

+0

我認爲這是舉起這隻猴子的好地方。謝謝大家。我會重新記住jsperf。 – folktrash

0

什麼 -

if (numberToCheck !== 0) { 
//doSomething(); 
} 

其實,我懷疑人能發現其中的差別。另外,每個瀏覽器js引擎可能會產生不同的結果。

+0

如果是單個操作,則無需將其中一個更改爲另一個。但是如果這是一個循環,可能會有明顯的差異。 – Dennis

1

你的意思是......絕對差異還是「有意義的差異」?

在任何情況下,它都將取決於底層VM實施的100%。雖然它可能是更快的來設置一個標誌,並且該標誌是&&(用於短路)中的第一個,並且其數值部分在第二位。

if (keepChecking && numberToCheck != 0) { 
    keepChecking == false; 
    // doSomething(); 
} 

再一次,依賴於虛擬機,我不敢相信這兩種方式都會影響很多。

+0

我想我的意思是絕對差異。雖然我在實際應用中挖掘它可能可以忽略不計。 – folktrash

相關問題