2011-09-14 43 views
0

我有遊戲,我用名字標記狀態。在每個更新與狀態的工作意味着,你使用他們的名字,字符串。我想知道是否值得用枚舉值替換字符串?使用枚舉而不是字符串加速?

也許它聽起來很愚蠢,但是有很多狀態,每個狀態至少每秒處理30次。

感謝

+0

你是否已經介紹了該應用?這是一個真正的問題還是僅僅是一個被認爲的問題Ints比字符串更快,但我可能會對應用程序進行配置以查看是否存在瓶頸。作爲後續,我會避免字符串比較,當更好/更快的事情會做。 – itsmatt

回答

1

好吧,你有性能問題?

當然,使用整數值會更快,但如果實施起來速度夠快,可以在別處花時間。也許在評論中留下自己的一句話。

0

默認情況下,枚舉在內部被視爲int s,所以如果您檢查很多次,那麼速度會更快。但是,如果它每秒只檢查30次,則與其他可能的成本相比,此成本毫無意義。你有沒有分析看什麼是最慢的?

+1

[不完全](http://msdn.microsoft.com/en-us/library/sbbt4032.aspx):_批准的枚舉類型是byte,sbyte,short,ushort,int,uint,long或ulong ._ –

+1

from your link:「枚舉元素的默認基礎類型是int。」您明確地必須強制它使用另一個存儲類 –

+0

但是,這不是您的第一句話。 –

0

就我個人而言,我認爲最大和可能不必要的效率,你應該考慮位標誌。這些允許您執行標準的按位運算符。

[Flags] 
enum Choices 
{ 
    OptionOne = 0x0, 
    OptionTwo = 0x1  
} 

class MyClass 
{ 
    Choices mychoice = Choices.OptionOne | Choices.OptionTwo; 
} 
0

枚舉是在這種情況下肯定更清潔,提供更好的可維護性......你不會錯字狀態這種方式(否則可能會,但是編譯器會告訴你)。它也會更快,通過字符串比較進行簡單的整數比較。這就是說,如果編碼已經完成,並且您沒有特定於此狀態實現的性能問題,則沒有太多理由來更改它。正如其他人所說,如果這是您唯一的問題,請將其歸檔。