Android浮點(diǎn)基礎(chǔ)概念淺談
Android手機(jī)操作系統(tǒng)一經(jīng)推出就受到了廣大用戶尤其是編程愛好者的好評(píng)。因?yàn)樗拈_源性,可以很好的滿足用戶的各種需求。我們將會(huì)在這里為大家分析一下Android浮點(diǎn)的一些相關(guān)概念,以幫助大家進(jìn)一步了解這一操作系統(tǒng)。#t#
避免使用Android浮點(diǎn)數(shù)
在奔騰CPU出現(xiàn)之前,游戲設(shè)計(jì)者做得最多的就是整數(shù)運(yùn)算。隨著奔騰的到來(lái),浮點(diǎn)運(yùn)算處理器成為了CPU內(nèi)置的特性,浮點(diǎn)和整數(shù)配合使用,能夠讓你的游戲運(yùn)行得更順暢。通常在桌面電腦上,你可以隨意的使用浮點(diǎn)運(yùn)算。
但是非常遺憾,嵌入式處理器通常沒(méi)有支持Android浮點(diǎn)運(yùn)算的硬件,所有對(duì)"float"和"double"的運(yùn)算都是通過(guò)軟件實(shí)現(xiàn)的。一些基本的浮點(diǎn)運(yùn)算,甚至需要毫秒級(jí)的時(shí)間才能完成。
甚至是整數(shù),一些芯片有對(duì)乘法的硬件支持而缺少對(duì)除法的支持。這種情況下,整數(shù)的除法和取模運(yùn)算也是有軟件來(lái)完成的。所以當(dāng)你在使用哈希表或者做大量數(shù)學(xué)運(yùn)算時(shí)一定要小心謹(jǐn)慎。
一些關(guān)于性能的數(shù)據(jù)
為了說(shuō)明我們的觀點(diǎn),我們列了一個(gè)表格,指明一些基本操作所用的時(shí)間。這些時(shí)間并不是絕對(duì)值,而是CPU時(shí)間和時(shí)鐘時(shí)間的混合體,隨著系統(tǒng)的提升,運(yùn)行時(shí)間肯定會(huì)縮短的。但是我們需要注意這些值之間的比例,比如增加一個(gè)成員變量會(huì)比增加一個(gè)本地變量多花費(fèi)四倍的時(shí)間。
- 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
要為嵌入式系統(tǒng)編寫優(yōu)雅高效的代碼最根本的是要明白你的這些代碼究竟要做什么。如果你真的想分配一個(gè)iterator,那么就對(duì)List使用foreach好了。它是你的選擇而不是什么無(wú)心之過(guò)。
Android浮點(diǎn)的相關(guān)概念就為大家介紹到這里。有備則無(wú)患。知道你想要做什么。傾注你***的熱情,清楚的了解你的代碼,然后盡力讓它跑得更快。