valueof 為什麼要從Android的性能提示中刪除“避免只在需要Ints的地方使用”?




java enum用途 (4)

內存性能仍然不好。

https://developer.android.com/training/articles/memory.html#Overhead

從官方開發人員文檔中刪除了“避免在您只需要Ints的地方引用”一節。 (請參閱為什麼Android不使用更多枚舉?舊節內容)

為什麼? Android VM中是否發生了變更,導致提示過時?


Elliot Hugues在2011年的回答中表示,避免枚舉的最初原因是出於性能原因......就像“處理性能”一樣。 由於這個原因沒有得到事實支持,它被從官方文件中刪除。

它後來被添加,因為枚舉在內存中添加了比使用整數更多的數據。



一個推測:

  • 像Hummingbird和Snapdragon這樣的Gigahertz CPU現在已經很普遍了,而最初限制Dalvik虛擬機的小規模小內存要求已經不再是真實的了。
  • 每個運輸設備都使用JIT(2.2以上版本)。 枚舉的類初始化器運行得更快,這些值可能被視為JIT時間常量,JIT可能會特別支持精簡枚舉類。
  • 對性能非常敏感的代碼使用NDK,當Android 1.5發佈時,它仍然是新的和未完成的。 2.3中的NDK支持本地活動,允許幾乎完全不受管理的遊戲。

因此,對於GUI應用程序的相對普通的需求來說,枚舉的開發時間優勢遠遠超過額外的運行時成本。





enums