2013-08-23 63 views
1

在一個項目中我的工作,我們在它的「枚舉」對象的腳本,因爲這樣的:JavaScript枚舉對象 - 字符串或數字更快?

var MyEnumeration = { 
    top: "top", 
    right: "right", 
    bottom: "bottom", 
    left: "left" 
}; 

當我們不得不使用一些會使用這些文字值之一,我們只是請與MyEnumeration.left或任何情況進行比較。

但是:在C#中至少,字符串值,通常評估慢於數字,因爲字符串必須做一個字符的字符比較,以確保該字符串相匹配的字符串B.

這使我我的問題:實施MyEnumeration與數值更快執行?

var MyEnumeration = { 
    top: 0, 
    right: 1, 
    bottom: 2, 
    left: 3 
}; 
+0

在哪方面執行得更快?如果您將一個變量與您的某個枚舉值進行比較?如果是這樣,我認爲你回答了你自己的問題。儘管如此謹慎行事,這有點像過早的優化。 – thatidiotguy

+0

我同意這可能是不成熟的優化,這是我只是好奇。就'在什麼方面'而言,我認爲更快或更慢可能只涉及執行時間,因爲JavaScript只是一種解釋語言......請糾正我,如果我錯了。 –

+1

@AndrewGray:比較字符串時,JavaScript會從左到右依次比較每個字符。但是當比較兩個數字時,這只是一個單一的比較。顯然你可以猜測哪一個更快。 –

回答

1

比較字符串時,JavaScript會從左到右依次比較每個字符。但是當比較兩個數字時,這只是一個單一的比較。顯然你可以猜測哪一個更快 - 數值比較。

但是,這種優化可能爲時過早。除非你真的需要提高效率(比較頻繁地比較這樣的數百個值,或許?),不要過多考慮它們。

1

它變化的基礎上的JavaScript引擎,因爲這jsperf出乎我的意料:

http://jsperf.com/string-compare-vs-number-compare/2

運行在兩個FF和鉻,結果是所有的地方,以字符串或數字比較是否更快。

您的問題的答案是取決於。如果您要定位一個瀏覽器,那麼您可以編寫可利用其特定優化進行比較的代碼。