導航:首頁 > 源碼編譯 > 安卓為什麼編譯效率低

安卓為什麼編譯效率低

發布時間:2024-08-27 22:31:16

1. 為什麼Linux安卓編譯會出現卡頓

一、這是由系統機制決定的,安卓程序都是運行在JAVA虛擬機上的,而不像iPhone手機那樣直接運行在操作系統上。該虛擬機就像是個垃圾生成器和內存大老虎,非常消耗內存,會產生很多垃圾,安卓機會隨著程序安裝的程序越多,cpu能耗越大,從而越來越卡,而且隨著用的時間越久,會越來越卡;最終都會走上不停刷機的不歸路,刷機又可能出錯,所以讓人很蛋疼。

二、安卓內存多任務機制,從理論上來說JAVA可自動殺死後台APP回收內存,但是JAVA虛擬機卻不能做到隨用隨收,當我們在使用安卓手機玩天天跑酷或雷霆戰機等游戲時,每隔一小會難免會出現一兩秒鍾的卡頓,這就是JAVA虛擬機在強制回收其他APP佔用的內存,而如果手機的硬體不夠強大,安卓手機則根本無力回收這些被佔用的內存,最終造成手機一直卡頓直到死機重啟。

三、安卓APP渣優化,由於安卓系統的開源,大多數軟體開發商都不嚴格按照安卓系統軟體的設計規定去執行,APP越做越臃腫,再高的硬體也被渣優化的安卓APP吃掉了。

2. 安卓和iOS的性能哪個好

一、優先順序別不同:iOS最先響應屏幕
當我們使用iOS或者是Android手機時,第一步就是滑屏解鎖找到相應程序點擊進入。而這個時候往往是所有操控開始的第一步驟,iOS系統產品就表現出來了流暢的一面,但Android產品卻給人一種卡頓的現象,更別說後續深入玩游戲或者進行其它操控了。這是為什麼?
其實這與兩個系統的優先順序有關,iOS對屏幕反應的優先順序是最高的,它的響應順序依次為Touch--Media--Service--Core架構,換句話說當用戶只要觸摸接觸了屏幕之後,系統就會最優先去處理屏幕顯示也就是Touch這個層級,然後才是媒體(Media),服務(Service)以及Core架構。而Android系統的優先順序響應層級則是Application--Framework--Library--Kernal架構,和顯示相關的圖形圖像處理這一部分屬於Library,你可以看到到第三位才是它,當你觸摸屏幕之後Android系統首先會激活應用,框架然後才是屏幕最後是核心架構。
優先順序的不同導致了iOS產品以及Android手機在操控過程中的表現差異,當你滑動屏幕進行操控的時候,iOS系統會優先處理Touch層級,而Android系統則是第三個才響應Library層級,這是造成它們流暢度不同的因素之一。

二、硬體工作配置不同:iOS基於GPU加速
目前智能手機硬體裝備競賽當中,其實處理器等配置已經達到了一個瓶頸期,各大旗艦產品在硬體比拼當中基本上沒有太大的區別,而這時候GPU就成為了一個凸顯差異的重要因素。一些大型軟體像是3D游戲對GPU性能要求都會比較高,蘋果iPhone產品採用的Power VR SGX系列GPU在當下來說非常的主流,跑分測試數據證明了它並不會比一些旗艦級別的Android產品差勁。
而iOS系統對圖形的各種特效處理基本上正好都是基於GPU硬體進行加速的,它可以不用完全藉助CPU或者程序本身,而是通過GPU進行渲染以達到更流暢的操控表現。但是Android系統產品則並非如此,因為Android需要適應不同的手機硬體,需要滿足各種差異配置,所以很多圖形特效大多都要靠程序本身進行加速和渲染,並嚴重依賴CPU運算的操作自然會加大處理器的負荷,從而出現卡頓的問題。雖然Android 4.0以及4.1等更高版本中進行了改進將硬體加速設為默認開啟,但依舊無法做到所有特效全部都靠GPU進行加速。在很多Android手機裡面都自帶有「是否開啟GPU渲染」這個功能選項,不過開啟之後的改善也是微乎其微。
屏幕最先響應的優先順序關系,再加上iSO本身GPU加速程序的特性,使得大家在操控過程中感覺iOS手機擁有著不錯的流暢性。因為它本身的整個流程都是在為最大化的流暢做服務,不管是第一印象的滑動接觸屏幕,還是你進一步使用程序之後的更深層操作都是如此。而GPU加速這點特性,應該是它優於Android系統流暢性的又一個因素。

三、開發機制不同:安卓機制效率低
Android的編程語言是JAVA,而iOS的則為Objective-C,不過要是說Android系統之所以有些卡頓是因為JAVA開發語言的關系,或者是拿它和Objective-C對比肯定會有人提出質疑。Objective-C的優勢是效率高但比較「唯一」,而JAVA的優勢則是跨平台不過運行效率相對偏低,其實這兩個編程語言所帶來的機制不同,就已經造成了各自系統之間的流暢性差異化。
iOS的Objective-C,編譯器gcc,而這個gcc編譯出來的代碼又被蘋果專為iOS架構優化到了極致,運行過程中也不需要虛擬機在中間插手,執行效率自然很高。這一段話應該是iOS系統本身運行程序的執行過程,而Android是通過JAVA虛擬機來執行,並且系統需要佔用大量內存來換取執行速度,再加上不定期的內存自動回收機制,從而直接導致了卡頓現象的出現。
Android的JAVA編程本身運行效率比Objective-C低一些,而且再加上內存自動回收的機制,所以造成了一些卡頓不流暢的現象出現。但根據技術人員講解,現代的JAVA虛擬機效率已經不再是最大的瓶頸,Android 4.0系統版本之後的卡頓現象明顯得到了改善,所以這也是有用戶並沒有發現自己新買的Android手機出現太多卡頓現象的原因。看來編程語言和機制已經被Android進行了改善,這同樣也不是造成它與iOS流暢性偏差的唯一因素,不過影響卻是實實在在存在著。

三、系統設計不同:安卓APP無法統一
因為iOS產品的封閉性,所以所有的APP運行對象都比較單一,因為每個應用程序都是被運行在iPhone,iPad等iOS產品當中,它們有著很高的硬體利用效率。因為iOS系統的配件供應商只有那麼幾家,CPU也是一年換一次,這點不像Android終端年年變月月變,開發者很難遇見未來終端解析度會包含多少種,GPU驅動會包含哪些等等,所以相對來說Android應用開發成本較高且收益較慢。而iOS應用開發則因為軟硬體垂直整合而受益,這樣一來蘋果自然就保證了應用本身其與硬體產品之間的完美結合程度。
其實Android和iOS兩大系統APP開發情況的不同,也正是它們開發和不開放的特性所造成的。如果要是拿旗艦Android手機加上一個專為這款旗艦產品設計的游戲,來和蘋果iPhone運行對比的話,你真的不會遇到Android旗艦機出現卡頓延遲的問題,為什麼因為這款游戲針對這款手機設計,在軟硬等方面都達到了最大化的兼容和優化,自然就不會出現停滯的現象。
而Android系統程序要被安裝在各種符合要求的手機上面,開發者也不可能針對所有的機器型號進行開發,只能在比較主流的機器上進行測試並保證運行效果,所以他們為了兼顧整個產品線只能不得不降低游戲體驗以達到高中低產品可以共用的效果。最後那些占據了Android終端份額的大量大眾用戶們由於自己的手機不是旗艦產品而得不到流暢的使用體驗,自然而然就會產生Android產品不如iOS流暢的抱怨。

不管是iOS產品感覺比Android流暢還是真的比它流暢,其實說到底原因很簡單。蘋果會花費一年甚至兩年的時間去開發一個桌面icon,一種字體,並去測試屏幕點位,而Android終端中除了Nexus系列之外似乎沒有太多產品可以做到用這么長的時間去做這么細致的事情。有網友說得好,Android做的更多的是「讓系統跑起來」,而iOS擁有著蘋果做的更多的則是「讓系統以最高的效率跑起來」,或許這就是iOS產品比Android更流暢的原因吧。但更好的一面的是,隨著谷歌對Android的持續升級以及各廠商對自家產品的循序改進,使得越來越多的Android終端正在擺脫卡頓不流暢的束縛,未來安卓用戶的期待同樣有望得到更好的滿足。

3. 為什麼蘋果打開應用的速度那麼快而安卓比較慢呢

1.iOS設備硬體高端,iOS家族裡面沒有低端設備,而Android家族則有不少低端設備;Android的高端機器也不是如主流觀點一樣都是硬體性能逆天的,比如之前很多Android旗艦用的Tegra 3處理器就存在內存帶寬小而影響性能發揮的問題,高通的Adreno系列GPU的實際性能也不算特別好;反觀iOS機器,比如ipad 4的PowerVR SGX 544MP4,iphone 5的PowerVR SGX 543MP3,都是移動GPU里的高端型號,更有高內存帶寬支持,性能很好;至於CPU,雖然Android家族已經很多四核機器了,iOS家族基本還是雙核,但是核心數量和性能沒必然的關系,你能說紅米的MTK四核CPU比你電腦的英特爾雙核CPU還強嗎?iOS設備的CPU性能也屬於優秀水平。

2.Android的應用大部分都是用Java語言開發,編譯成一種「中間代碼」,在Dalvik VM虛擬機上運行,程序運行時還要通過虛擬機對「中間代碼」進行編譯才能運行,運行效率不高,更耗費硬體資源,只有少部分應用,比如游戲之類的,要求性能的,會使用Android NDK進行C/C++開發,不過也不能算純粹的Native程序;而iOS的應用使用Object-C語言進行開發,編譯成可直接運行的二進制代碼,都是Native程序,運行效率高,消耗資源更小;參加過演算法競賽的人都知道,Java在時間和空間方面的要求都會比C/C++寬松一倍,就因為Java程序運行效率較低;同時,Android的程序有著更為自由的後台運行能力,相比iOS的多任務機制,Android的多任務要消耗多一點的硬體資源。

3.蘋果擁有多年的操作系統研發經驗,在iOS上採用了很多優化和設計來實現流暢的運行,比如使用GPU繪制界面,高幀數的動畫,高優先順序的界面渲染和觸摸響應等等,流暢並不等於速度快,iOS的運行速度很多時候其實並不快,只是用了高幀數的過渡動畫,使你感覺這是一個連續的過程,不至於有斷續感,從而感覺到運行很快,其實功能機的運行速度也很快,但就是缺少了過渡動畫,沒有給人那種連貫的感覺,比如打開存有大量簡訊的簡訊程序,功能機耗時是1s,iOS耗時1.5s,理論上功能機快,但iOS的過渡動畫讓人覺得速度更快;而Android早期一直是谷歌的移動廣告平台的定位,直到Android 4.0發布之後,才可以說是成為谷歌重點支持的移動操作系統,所以,Android 4.0之後的Android版本在各方面才有了巨大提升,Android很多對性能有極大幫助的特性都是Android 3.0時才出現的,Android系統底層所做的優化相對不足,比如Android 3.0以下的版本都無法使用GPU繪制界面,即使Android 4.x,也要打開「強制GPU渲染」才能在全局使用GPU繪制界面,還有界面渲染框架的效率不高等問題。

4.使用智能手機更多是在使用各種應用,蘋果iOS平台的應用生態環境相比谷歌Android平台要好很多,精品應用為數眾多,這些精品應用質量都很高,運行流暢、速度快、用戶體驗好,這些都要歸功於蘋果App Store嚴格的審核制度和優秀的盈利模式;Google Play Store在Android 4.0發布之後發展也很快,但是寬松的審核制度,Android平台開放的環境導致盜版橫行,開發者,尤其個人開發者熱情不高,很多應用質量很差,其中也不乏大公司的產品,連最基本符合Android Design都做不到,完全照搬iOS的界面,其質量可想而已,這些也嚴重拉低了Android的用戶體驗水平。

閱讀全文

與安卓為什麼編譯效率低相關的資料

熱點內容
gcc編譯選項給gdb調試 瀏覽:586
ios和android前景好 瀏覽:60
蘋果如何藍牙傳送安卓app 瀏覽:550
方舟編譯器mod怎麼用 瀏覽:754
伺服器地址欄在哪裡 瀏覽:393
做安檢還是程序員好 瀏覽:524
程序員最火的bug 瀏覽:936
騰訊文件夾英文怎麼寫 瀏覽:125
pdf內碼 瀏覽:432
微信小程序文件夾怎麼發給好友 瀏覽:969
java不能被繼承的類 瀏覽:161
蘋果app網址怎麼添加 瀏覽:910
php明年的今天 瀏覽:115
麒麟970也能用方舟編譯器么 瀏覽:476
金融實驗大作業python 瀏覽:795
雲伺服器搭建聊天室 瀏覽:603
怎麼在手機上下載荔枝app 瀏覽:18
湖南戴爾伺服器雲空間 瀏覽:363
聯想驅動怎麼解壓 瀏覽:268
程序員進化論解說 瀏覽:871