本文轉自:http://android.tgbus.com/
避免使用浮點數
在奔騰CPU出現之前,遊戲設計者做得最多的就是整數運算。隨著奔騰的到來,浮點運算處理器成為了CPU內建的特性,浮點和整數配合使用,能夠讓你的遊戲運行得更順暢。通常在案頭電腦上,你可以隨意的使用浮點運算。
但是非常遺憾,嵌入式處理器通常沒有支援浮點運算的硬體,所有對"float"和"double"的運算都是通過軟體實現的。一些基本的浮點運算,甚至需要毫秒級的時間才能完成。
甚至是整數,一些晶片有對乘法的硬體支援而缺少對除法的支援。這種情況下,整數的除法和模數運算也是有軟體來完成的。所以當你在使用雜湊表或者做大量數學運算時一定要小心謹慎。
一些關於效能的資料
為了說明我們的觀點,我們列了一個表格,指明一些基本操作所用的時間。這些時間並不是絕對值,而是CPU時間和時鐘時間的混合體,隨著系統的提升,已耗用時間肯定會縮短的。但是我們需要注意這些值之間的比例,比如增加一個成員變數會比增加一個本地變數多花費四倍的時間。
Action Time
Add a local variable 1
Add a member variable 4
Call String.length() 5
Call empty static native method 5
Call empty static method 12
Call empty virtual method 12.5
Call empty interface method 15
Call Iterator:next() on a HashMap 165
Call put() on a HashMap 600
Inflate 1 View from XML 22,000
Inflate 1 LinearLayout containing 1 TextView 25,000
Inflate 1 LinearLayout containing 6 View objects 100,000
Inflate 1 LinearLayout containing 6 TextView objects 135,000
Launch an empty activity 3,000,000
要為嵌入式系統編寫優雅高效的代碼最根本的是要明白你的這些代碼究竟要做什麼。如果你真的想分配一個iterator,那麼就對List使用foreach好了。它是你的選擇而不是什麼有趣的錯誤提示。
有備則無患。知道你想要做什麼。傾注你最大的熱情,清楚的瞭解你的代碼,然後儘力讓它跑得更快。