“然並卵”人們總是對iOS和Android的流暢度有太多的誤解
發布時間:2015-08-18 責任編輯:echolady
【導讀】對於iOS和Android係統,人們總是覺得Android係統用起來會出現卡頓現象,所以偏愛於iOS。事實上,人們都對iOS和Android係統有著太多的誤解,導致誤會越來越深。本文就來為你揭曉一切真相。

不是

一、什麼是流暢?什麼是卡頓?
如果我們討論流暢和卡是建立在不同的標準上,一定會變成毫無意義的口水戰。在這裏,流暢我們定義為運行程序時達到60fps或以上的繪製效率,且盡可能少丟幀。卡頓我們定義為程序運行時無法達到60fps,丟幀頻繁。
二、Apple和Android陣營比是不是能帶來更流暢的應用體驗?
不是。兩者都非常順滑,用久了也都不卡頓。
Android定義為帶有GMS推送的,帶有良好Android應用生態圈的(包括少數國內優秀應用),具有GooglePlay服務的Android手機,擁有健康使用習慣的Android。包括但不限於Nexus,Moto,SONY,LG,htc,Samsung在沒有封殺Google的市場的使用體驗。
三、Apple和安卓陣營比是不是能帶來更流暢的應用體驗?
是。安卓(尤其是用久了)很可能會卡頓。
安卓定義為不帶GMS推送的,缺失良好Android應用生態的,不具有GooglePlay服務的,基於各種“深度優化,深度定製,世界第一,跑分天王,etc.”家,配合“動不動就管家衛士全家桶,清理內存釋放手機速度,打敗全國百分之XX”的用戶的安卓生態。
四、Apple和Android陣營硬件對比
Apple硬件處於一個什麼樣的水平?足夠優秀的水平,Apple是著名的硬件狂魔,並不是大家想的iPhone硬件遠遠不及Android陣營。
1、Android陣營目前的旗艦Soc之一是基於高通810的解決方案(MTK和三星,華為的解決方案不是很了解,歡迎補充。當然業界一般認為是三星的CPU14nm製程更先進,所以功耗發熱的表現較810更好。),它擁有8個CPU核心,20nm製程,主頻高達2GHz。810純CPU計算能力,並發計算能力優於A8。但它頻率高,核心多,功耗和發熱量在密集計算時也會遠高於A8,發熱會限製810的發揮。
2、CPUCache方麵。
A8非常慷慨地配備了高達64KB64KB的L1Cache,1MBL2Cache和4MBL3Cache,與上一代A7相同,810數據不明。但實際應用來看,似乎810配備的Cache喂不飽8個核心,存在CacheMiss的情況。(有硬件信息的朋友歡迎補充)但是,即使沒有準確數據的情況下,有一件事情也是可以確定的,那就是CacheperCore數據810絕對不如A8。如果要做到一樣的水平,那麼810要配備128kbL1Cache,4MBL2Cache,16MBL3Cache。要知道的是,這麼多的Cache即使是對於IntelCorei7也是很奢侈的。而如果假設810和A8配備了一樣的Cache,810的CacheperCore數據就很難看了。要知道,CPUCache的速度遠高於RAM的速度,所以小Cache帶來的情況就是外圍I/O經常處於等待狀態,延遲了CPU計算能力的發揮。打個比方,你拿跑車引擎配個4速變速箱,引擎的能力就無法發揮了。Cache方麵,A8表現優於810。
3、GPU方麵。
A8配備的PowerVRSeries6XTGX6450運算能力是136.4Gflops(533MHz)/153.6GFlops(600MHz),稍微優於801配備的Adreno330,Adreno430則是324~388.8GHz(600MHz)【水冷……】。畢竟當時高通設計810的時候就是用來拖4k的,圖形性能Adreno430數據上遠優於GX6450,但是GX6450帶1334*750相當於801帶720p,帶1920*1080分辨率性能也足夠充裕。
4、晶體管數量。
喪心病狂的A8堆了20億個晶體管(包括Cache,GPU,dsp),已經趕上810所有8個核的總晶體管數量了。帶來了A8極其凶殘的單核性能。810單核性能弱於A8。
[page]
五、係統與運行機製層麵
(一)內核
1、又要開始拿Linux和Unix說事了,但很不幸的是,流暢這件事跟係統內核一點關係都沒有。
2、說個老梗:
●iOS基於Unix所以是Touch(響應觸摸操作)——Media——Service——Core架構
●Android基於Linux所以是Application——Framework——Library(包含了響應觸摸操作的顯示相關)——Kernal架構
●所以iOS要比Android響應的快,所以iOS更流暢雲雲
●然而這個東西是2.x時代的,Google早就改掉了……我也不知道這種Unix內核性能優於Linux的論調為什麼時不時還會冒出來……反正兩者都不是實時操作係統(RTOS)。
(二)運行時(Runtime)
1、Android基於Java虛擬機,前段時間還因為這個Google和甲骨文吵上了法庭。算了回歸正題,我們主要要說的運行時有Dalvik和ART(AndroidRuntime)兩種,Dalvik是Android於Android4.4之前所使用的默認Runtime,ART則是AndroidRuntime,是在4.4時引入的一種新的運行時,在L及以上版本取代Dalvik成為默認運行時,在GC機製、JNI和Stacksize上都與dalvik有著很大的不同。Dalvik屬於JIT(Jusi-in-time)編譯器,ART屬於AOT(Ahead-of-time)編譯器。反正說了這麼多你們隻需要知道ART可以直接調用底層效率更高就對了。
2、iOS不開源,但是可以知道的是它的Object-C編譯器屬於GCC編譯套裝的一部分(感謝@InflationAaron指出:後期應該是轉向了蘋果主導的LLVM編譯器)。
(三)渲染流水線
1、Android3.0引入了應用端繪圖的GPU加速(HardwareCanvas),Android4.1引入了黃油計劃(ProjectButter),到4.1可以說Android的渲染機製已經足夠優秀,隻要按DesignGuideline寫是輕鬆讓過渡動畫達到60fps的。黃油計劃包括了:
●窗口三重緩衝機製(降低連續丟幀可能性)
●垂直同步機製(減小應用端開始繪製到實際屏幕更新的延遲)
●GL窗口緩存繪圖命令的異步執行(減少應用主線程的阻塞)
但很明顯Google還不滿足,於是在AndroidL引入了獨立的GPU線程,並允許主線程和GPU線程並發。也就是說GPU線程在繪製第N幀的DisplayList時,主線程已經可以同時生成第N1幀的DisplayList,並且允許GPU調用不同參數繪製同一個DisplayList,簡單的說就是提高了繪製過渡動畫的效率。
這裏說一個Google的黑科技,ProjectSky-DartonAndroid,完全脫離Java的一套東西,他們的目標是把渲染時間壓縮到8ms以內,也就是等效120fps。但他們現在做出的Demo裏每幀平均渲染時間是1.2ms/f,也就是等效驚人的833fps……
2、iOS不開源……(又來了)但是,我們仍然可以推測他的渲染流水線和WebKit類似,因為WebKit存在大量Apple的參與代碼。
3、總而言之,你們隻需要知道Android和iOS是differentbutnotbetterthaneachother就行了。隻是在實現路線上有所不同,但實際上到最後都異曲同工。Google的ProjectSky性能驚人,實際應用有待觀查。
六、應用,ROM(Android)以及其它
1、BAT
●Baidu,alibaba,tencent,號稱Android流暢度三大殺手
●這些大公司用戶太多太多了,導致他們必須兼容低版本的Android,無法利用新的API,導致卡頓:
(1)QQ,節奏大師,Android2.2,APIlevel8
(2)QQ瀏覽器,UC瀏覽器,Android2.3,APIlevel9
(3)閑魚,支付寶,淘寶,百度,Android4.0,APIlevel14
(4)微信,Android4.0.3,APIlevel15
●發現什麼問題了沒有?引入黃油計劃的Android版本是4.1,所以60fps……
●然後QQ和節奏大師你們這還抱著凍酸奶的態度令我感動……以及瀏覽器們都和薑餅曖昧不清……唉,連GPU加速都……
●然後如果打開開發者選項裏麵的showGPUoverdraw(雖然不一定是GPU繪製的),你們就會發現各種嚴重的overdraw,尤其是阿裏巴巴係列的應用,整個頁麵濫用Webview,導致了嚴重的重複繪製。
●BAT經常大量使用自製控件進一步加劇了對資源的使用。
●假如有第三方客戶端的話,其實往往有非常優秀的遵守DesignGuideline的應用,比如新浪微博的第三方客戶端們,四次元,Fuubo,Smooth等等。
2、GCM,與那些推送的事情
●GCM就是GoogleCloudMessaging,是Google自家的推送服務,也是絕大多數Android應用的推送服務。使用這個服務,利用的是Google服務器統一推送,可以帶來及時,省電,後台不喚醒的推送體驗。
●APNs就是ApplePushNotificationService,Apple的推送服務,與GCM類似,可以帶來良好的體驗,且是iOS上唯一的推送機製。
●然而由於某堵牆的存在,國內並沒有辦法體驗到GCM推送帶來的推送體驗。所以部分手機廠商就開始做自己的推送機製,比如小米做的對齊喚醒和MiPush,但是隻對MIUI及兼容的部分應用有用。
●剩下的就是其它諸多推送了,BAT自家的推送機製,極光,蝴蝶雲,智遊,個推等等。假如很不幸的,你的手機上安裝了BAT全套,又安裝了帶各種不同推送提供商的應用,那就等著感人的耗電,內存占用與無數的後台喚醒吧……
[page]
3、優化
●很不幸的是,到現在,兩個平台都仍然有大量的應用跑在單核單線程上,對雙核,多核以及64位的利用非常之低,甚至沒有。這個時候A8較高的單核性能能帶來更好的體驗。但如果應用對多核做好了適配的話,在Android上流暢性是可以花樣吊打iOS的。
4、流媒體視頻
●Android在這方麵流暢度要好於iOS
(1)Android支持傳統流媒體格式,可以用已經成熟的CDN
(2)iOS需要使用TS流,需要額外準備CDN線路,部分線路支持還不佳
(3)Android4.0後使用HLS協議並且實現P2P
(三)ROM
1、iOS並不存在這個問題,不講。
2、Android存在的問題是,有太多廠商太多版本的ROM了,每個廠商都對底層做些修改。所以簡而言之就是鬧心,負分優化大家見得多了我就不說了。
PS:知道為什麼國內定製越深度的ROM適配AndroidL越慢嗎?就是因為底層的東西改得太多5.0把運行時改了工程量很大難以在保證功能健全的情況下快速適配。
3、驅動(不是很懂,希望補充)
七、最後我們來說說設計
1、iOS的人機交互設計還是很值得稱道的,畢竟是帶領我們進入了MultiTouch時代,從iOS6的擬物到iOS7/8/9的(de)扁(bian)平(ping)高(gao)斯(si)模(mo)糊(hu)毛(mao)玻(bo)璃(li)為(wei)代(dai)表(biao)的(de)設(she)計(ji)路(lu)線(xian),都(dou)可(ke)以(yi)說(shuo)是(shi)一(yi)套(tao)非(fei)常(chang)值(zhi)得(de)令(ling)人(ren)尊(zun)重(zhong)的(de)設(she)計(ji)方(fang)案(an)。它(ta)是(shi)比(bi)較(jiao)早(zao)把(ba)流(liu)暢(chang)的(de)動(dong)畫(hua)引(yin)入(ru)設(she)計(ji)語(yu)言(yan)的(de)一(yi)個(ge)方(fang)案(an),也(ye)在(zai)長(chang)期(qi)的(de)驗(yan)證(zheng)中(zhong)逐(zhu)漸(jian)發(fa)展(zhan)成(cheng)熟(shu)。
2、以HoloTheme為代表的AndroidDesign,進化出了MaterialDesign,對整個UI的把控能力達到了一個非常高的水準。陰影,漣漪波紋,Z軸等等,都顯示出Google對細節一絲不苟的把控,且這套UI比較好的解決了桌麵,網頁,移動端的交互統一性。
八、總結
1、總之,對比下來我們會發現,兩種生態在健康的情況下其實軟硬技術實力都是處在同一水平線上的,互有長短。硬件Apple並沒有弱於Android,更談不上軟件的神優化。但是,如果Android沒有GoogleServices,就相當於失去了Android的靈魂,失去了GooglePlay的優秀資源,失去了GCM推送帶來的流暢省電,失去了GoogleCloud在內的很多很多核心競爭力。不卡或會卡,本質不是係統的問題,而是什麼樣的環境,用戶著什麼樣的程序。
2、iPhone就好像是一輛F1方程式賽車,裏裏外外都精心設計過。看起來隻有1.6L的排量,但實際上卻是一顆上千馬力的心髒,但這也決定了他隻能在專門設計的方程式賽道上跑,而且跑的很歡。一旦脫離賽道(越獄),就各種不安全。
3、Android則好像是各種其它跑車,硬件的定製化程度極高,既有入門級的現代Coupe,尚酷R,也有比肩F1的布加迪威航,法拉利,蘭博基尼,更有小眾的科林賽格,優雅的瑪莎拉蒂等等……如果再適合他們的路況上跑,就算是入門級,輕鬆破200km/h也不是什麼難事,即使無法比肩F1,也足夠體驗駕駛樂趣,旗艦則可以和F1全麵硬抗,彎道,直道,加速,都能爭個高下,甚至還可以玩一些F1做不到的事情,比如彈射起步,漂移等等。
4、安卓則是……則ze是shi幾ji個ge改gai裝zhuang廠chang把ba這zhe些xie跑pao車che們men自zi行xing改gai裝zhuang,有you的de廠chang商shang改gai的de好hao,有you的de改gai成cheng渣zha,拉la到dao了le坑keng窪wa不bu平ping的de土tu路lu上shang,還hai時shi不bu時shi來lai點dian路lu障zhang,這zhe就jiu算suan起qi步bu跑pao得de溜liu,但dan久jiu了le對dui整zheng車che肯ken定ding不bu好hao。
相關閱讀:
逆天設計:蘋果新Touch ID讓Android好無語
視頻完爆差異化:蘋果 CarPlay VS 穀歌 Android Auto
五問五答摸清Android Wear手表“疑難雜症”
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 邊緣AI的發展為更智能、更可持續的技術鋪平道路
- 每台智能體PC,都是AI時代的新入口
- IAR作為Qt Group獨立BU攜兩項重磅汽車電子應用開發方案首秀北京車展
- 構建具有網絡彈性的嵌入式係統:來自行業領袖的洞見
- 數字化的線性穩壓器
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索



