2012-01-12 110 views
2

爲什麼不是Byte默認的枚舉類型?爲什麼不是Byte默認的枚舉類型?

Int32看起來像是矯枉過正。我曾經使用過的每個枚舉都包含了20個值。這是一個微型優化,但似乎所有常見的用法都低於256個值[在我有限的經驗中]。

是否有更多的技術原因,或者只是爲了確保Enum使用的「所有常見」場景工作正常,並且Int32在除了角落情況之外的所有其他場合都不是很昂貴?

另外我得到的意思是編譯器不會改變支持類型(或沒有人提到它優化了我讀過的枚舉)。它是否優化了支持類型,因爲它知道編譯時的值範圍?

回答

5

因爲x86指令集本身支持int32操作。使用int8操作數時性能沒有增益。內存訪問自然對齊的操作數(32位可以被32整除)的執行速度要快於子字必須先洗牌的速度。

相關問題