java比ios慢_Android为什么比iOS慢
有些人會(huì)覺Android應(yīng)用沒有iOS應(yīng)用使用得流暢,我覺得主要原因有以下幾點(diǎn):
第一,因?yàn)锳ndroid平臺(tái)相較于iOS起步晚,平臺(tái)不成熟,初期的開發(fā)者水平也有限,沒有很關(guān)注性能優(yōu)化,只是想做出可用的應(yīng)用,而未做出好用的應(yīng)用。
第二,Android相對(duì)比較開放,讓開發(fā)者發(fā)揮的空間比較大。比如開發(fā)后臺(tái)永生進(jìn)程、肆意搜集手機(jī)使用信息等這些會(huì)影響手機(jī)整體性能的行為理論上都是可以做得到,所以有些開發(fā)者就利用這種開放性,不顧用戶體驗(yàn),做了很多上不了臺(tái)面的小動(dòng)作,導(dǎo)致手機(jī)整體使用體驗(yàn)被拖累。
第三,Dalvik運(yùn)行時(shí)機(jī)制導(dǎo)致了Android應(yīng)用相對(duì)iOS會(huì)慢一些,所以Android團(tuán)隊(duì)在4.4版本后使用Art運(yùn)行時(shí)替代了Dalvik,下面我們?cè)敿?xì)分析下為什么Dalvik運(yùn)行時(shí)會(huì)導(dǎo)致慢。
Android是基于Java語言的,iOS是基于Obejctive-C。表現(xiàn)在手機(jī)和應(yīng)用程序運(yùn)行機(jī)制上,Java的代碼實(shí)際上需要 兩次“轉(zhuǎn)換”才能最終以用戶可看的程序跑起來,一次發(fā)生在開發(fā)者發(fā)布安裝包前,使用開發(fā)者自己機(jī)器的CPU,另一次在用戶啟動(dòng)APP前,使用手機(jī)的 CPU。而基于Objective-C的代碼只需要一次這種“轉(zhuǎn)換”,在開發(fā)者發(fā)布安裝包前,所以只占用開發(fā)者機(jī)器的CPU時(shí)間。
在編譯Android程序時(shí),首先java代碼被編譯成class文件,然后被java打包工具dx打包成.dex文件, Dex是DalvikVM executes的簡(jiǎn)稱,即Android Dalvik執(zhí)行程序。然后.dex文件和資源文件一起被壓縮成apk文件。APK其實(shí)也是zip格式,只是后綴被修改為了apk。Android應(yīng)用安裝過程:復(fù)制APK安裝包到data/app目錄下,解壓并掃描安裝包,把dex文件(Dalvik字節(jié)碼)保存到dalvik-cache目錄,并data/data目錄下創(chuàng)建對(duì)應(yīng)的應(yīng)用數(shù)據(jù)目錄。這樣每次用戶點(diǎn)擊圖標(biāo)運(yùn)行android程序時(shí),dalvik虛擬機(jī)就會(huì)用JIT的方法把dex文件翻譯為機(jī)器碼執(zhí)行。雖然Dalvik虛擬機(jī)已被做過很多優(yōu)化,但因?yàn)榇朔N機(jī)制的存在,所以Android在電量消耗和程序運(yùn)行流暢程度上一直不敵iOS。
Android 4.4版本后這種情況會(huì)有很大改觀,Android 4.4采用ART模式,可以在用戶第一次安裝應(yīng)用時(shí),字節(jié)碼就會(huì)預(yù)先編譯成機(jī)器碼,使其成為真正的本地應(yīng)用。不過也因?yàn)檫@一點(diǎn),一個(gè)應(yīng)用會(huì)占用更大的rom空間,第一次安裝時(shí)間也會(huì)變長。但它帶來的好處是遠(yuǎn)遠(yuǎn)大于這些缺點(diǎn)的。
以下是Art和Dalvik的對(duì)比圖
Dalvik和Art模式區(qū)別
上文只代表一家言論,歡迎大家吐槽。
總結(jié)
以上是生活随笔為你收集整理的java比ios慢_Android为什么比iOS慢的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手机qq看点功能怎么设置
- 下一篇: android 反色 java_Andr