你的位置:首頁 > 測試測量 > 正文

“然并卵”人們總是對iOS和Android的流暢度有太多的誤解

發(fā)布時間:2015-08-18 責(zé)任編輯:echolady

【導(dǎo)讀】對于iOS和Android系統(tǒng),人們總是覺得Android系統(tǒng)用起來會出現(xiàn)卡頓現(xiàn)象,所以偏愛于iOS。事實上,人們都對iOS和Android系統(tǒng)有著太多的誤解,導(dǎo)致誤會越來越深。本文就來為你揭曉一切真相。

“然并卵”人們總是對iOS和Android的流暢度有太多的誤解
不是
“然并卵”人們總是對iOS和Android的流暢度有太多的誤解
我們應(yīng)該為這個世界的多樣性而感到慶幸,不是么?

一、什么是流暢?什么是卡頓?

如果我們討論流暢和卡是建立在不同的標(biāo)準(zhǔn)上,一定會變成毫無意義的口水戰(zhàn)。在這里,流暢我們定義為運行程序時達到60fps或以上的繪制效率,且盡可能少丟幀??D我們定義為程序運行時無法達到60fps,丟幀頻繁。

二、Apple和Android陣營比是不是能帶來更流暢的應(yīng)用體驗?

不是。兩者都非常順滑,用久了也都不卡頓。

Android定義為帶有GMS推送的,帶有良好Android應(yīng)用生態(tài)圈的(包括少數(shù)國內(nèi)優(yōu)秀應(yīng)用),具有GooglePlay服務(wù)的Android手機,擁有健康使用習(xí)慣的Android。包括但不限于Nexus,Moto,SONY,LG,htc,Samsung在沒有封殺Google的市場的使用體驗。

三、Apple和安卓陣營比是不是能帶來更流暢的應(yīng)用體驗?

是。安卓(尤其是用久了)很可能會卡頓。

安卓定義為不帶GMS推送的,缺失良好Android應(yīng)用生態(tài)的,不具有GooglePlay服務(wù)的,基于各種“深度優(yōu)化,深度定制,世界第一,跑分天王,etc.”家,配合“動不動就管家衛(wèi)士全家桶,清理內(nèi)存釋放手機速度,打敗全國百分之XX”的用戶的安卓生態(tài)。

四、Apple和Android陣營硬件對比

Apple硬件處于一個什么樣的水平?足夠優(yōu)秀的水平,Apple是著名的硬件狂魔,并不是大家想的iPhone硬件遠遠不及Android陣營。

1、Android陣營目前的旗艦Soc之一是基于高通810的解決方案(MTK和三星,華為的解決方案不是很了解,歡迎補充。當(dāng)然業(yè)界一般認為是三星的CPU14nm制程更先進,所以功耗發(fā)熱的表現(xiàn)較810更好。),它擁有8個CPU核心,20nm制程,主頻高達2GHz。810純CPU計算能力,并發(fā)計算能力優(yōu)于A8。但它頻率高,核心多,功耗和發(fā)熱量在密集計算時也會遠高于A8,發(fā)熱會限制810的發(fā)揮。

2、CPUCache方面。

A8非??犊嘏鋫淞烁哌_64KB64KB的L1Cache,1MBL2Cache和4MBL3Cache,與上一代A7相同,810數(shù)據(jù)不明。但實際應(yīng)用來看,似乎810配備的Cache喂不飽8個核心,存在CacheMiss的情況。(有硬件信息的朋友歡迎補充)但是,即使沒有準(zhǔn)確數(shù)據(jù)的情況下,有一件事情也是可以確定的,那就是CacheperCore數(shù)據(jù)810絕對不如A8。如果要做到一樣的水平,那么810要配備128kbL1Cache,4MBL2Cache,16MBL3Cache。要知道的是,這么多的Cache即使是對于IntelCorei7也是很奢侈的。而如果假設(shè)810和A8配備了一樣的Cache,810的CacheperCore數(shù)據(jù)就很難看了。要知道,CPUCache的速度遠高于RAM的速度,所以小Cache帶來的情況就是外圍I/O經(jīng)常處于等待狀態(tài),延遲了CPU計算能力的發(fā)揮。打個比方,你拿跑車引擎配個4速變速箱,引擎的能力就無法發(fā)揮了。Cache方面,A8表現(xiàn)優(yōu)于810。

3、GPU方面。

A8配備的PowerVRSeries6XTGX6450運算能力是136.4Gflops(533MHz)/153.6GFlops(600MHz),稍微優(yōu)于801配備的Adreno330,Adreno430則是324~388.8GHz(600MHz)【水冷……】。畢竟當(dāng)時高通設(shè)計810的時候就是用來拖4k的,圖形性能Adreno430數(shù)據(jù)上遠優(yōu)于GX6450,但是GX6450帶1334*750相當(dāng)于801帶720p,帶1920*1080分辨率性能也足夠充裕。

4、晶體管數(shù)量。

喪心病狂的A8堆了20億個晶體管(包括Cache,GPU,dsp),已經(jīng)趕上810所有8個核的總晶體管數(shù)量了。帶來了A8極其兇殘的單核性能。810單核性能弱于A8。
[page]

五、系統(tǒng)與運行機制層面

(一)內(nèi)核

1、又要開始拿Linux和Unix說事了,但很不幸的是,流暢這件事跟系統(tǒng)內(nèi)核一點關(guān)系都沒有。

2、說個老梗:

●iOS基于Unix所以是Touch(響應(yīng)觸摸操作)——Media——Service——Core架構(gòu)

●Android基于Linux所以是Application——Framework——Library(包含了響應(yīng)觸摸操作的顯示相關(guān))——Kernal架構(gòu)

●所以iOS要比Android響應(yīng)的快,所以iOS更流暢云云

●然而這個東西是2.x時代的,Google早就改掉了……我也不知道這種Unix內(nèi)核性能優(yōu)于Linux的論調(diào)為什么時不時還會冒出來……反正兩者都不是實時操作系統(tǒng)(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可以直接調(diào)用底層效率更高就對了。

2、iOS不開源,但是可以知道的是它的Object-C編譯器屬于GCC編譯套裝的一部分(感謝@InflationAaron指出:后期應(yīng)該是轉(zhuǎn)向了蘋果主導(dǎo)的LLVM編譯器)。

(三)渲染流水線

1、Android3.0引入了應(yīng)用端繪圖的GPU加速(HardwareCanvas),Android4.1引入了黃油計劃(ProjectButter),到4.1可以說Android的渲染機制已經(jīng)足夠優(yōu)秀,只要按DesignGuideline寫是輕松讓過渡動畫達到60fps的。黃油計劃包括了:

●窗口三重緩沖機制(降低連續(xù)丟幀可能性)

●垂直同步機制(減小應(yīng)用端開始繪制到實際屏幕更新的延遲)

●GL窗口緩存繪圖命令的異步執(zhí)行(減少應(yīng)用主線程的阻塞)

但很明顯Google還不滿足,于是在AndroidL引入了獨立的GPU線程,并允許主線程和GPU線程并發(fā)。也就是說GPU線程在繪制第N幀的DisplayList時,主線程已經(jīng)可以同時生成第N1幀的DisplayList,并且允許GPU調(diào)用不同參數(shù)繪制同一個DisplayList,簡單的說就是提高了繪制過渡動畫的效率。

這里說一個Google的黑科技,ProjectSky-DartonAndroid,完全脫離Java的一套東西,他們的目標(biāo)是把渲染時間壓縮到8ms以內(nèi),也就是等效120fps。但他們現(xiàn)在做出的Demo里每幀平均渲染時間是1.2ms/f,也就是等效驚人的833fps……

2、iOS不開源……(又來了)但是,我們?nèi)匀豢梢酝茰y他的渲染流水線和WebKit類似,因為WebKit存在大量Apple的參與代碼。

3、總而言之,你們只需要知道Android和iOS是differentbutnotbetterthaneachother就行了。只是在實現(xiàn)路線上有所不同,但實際上到最后都異曲同工。Google的ProjectSky性能驚人,實際應(yīng)用有待觀查。

六、應(yīng)用,ROM(Android)以及其它


1、BAT

●Baidu,alibaba,tencent,號稱Android流暢度三大殺手

●這些大公司用戶太多太多了,導(dǎo)致他們必須兼容低版本的Android,無法利用新的API,導(dǎo)致卡頓:

(1)QQ,節(jié)奏大師,Android2.2,APIlevel8

(2)QQ瀏覽器,UC瀏覽器,Android2.3,APIlevel9

(3)閑魚,支付寶,淘寶,百度,Android4.0,APIlevel14

(4)微信,Android4.0.3,APIlevel15

●發(fā)現(xiàn)什么問題了沒有?引入黃油計劃的Android版本是4.1,所以60fps……

●然后QQ和節(jié)奏大師你們這還抱著凍酸奶的態(tài)度令我感動……以及瀏覽器們都和姜餅曖昧不清……唉,連GPU加速都……

●然后如果打開開發(fā)者選項里面的showGPUoverdraw(雖然不一定是GPU繪制的),你們就會發(fā)現(xiàn)各種嚴重的overdraw,尤其是阿里巴巴系列的應(yīng)用,整個頁面濫用Webview,導(dǎo)致了嚴重的重復(fù)繪制。

●BAT經(jīng)常大量使用自制控件進一步加劇了對資源的使用。

●假如有第三方客戶端的話,其實往往有非常優(yōu)秀的遵守DesignGuideline的應(yīng)用,比如新浪微博的第三方客戶端們,四次元,F(xiàn)uubo,Smooth等等。

2、GCM,與那些推送的事情

●GCM就是GoogleCloudMessaging,是Google自家的推送服務(wù),也是絕大多數(shù)Android應(yīng)用的推送服務(wù)。使用這個服務(wù),利用的是Google服務(wù)器統(tǒng)一推送,可以帶來及時,省電,后臺不喚醒的推送體驗。

●APNs就是ApplePushNotificationService,Apple的推送服務(wù),與GCM類似,可以帶來良好的體驗,且是iOS上唯一的推送機制。

●然而由于某堵墻的存在,國內(nèi)并沒有辦法體驗到GCM推送帶來的推送體驗。所以部分手機廠商就開始做自己的推送機制,比如小米做的對齊喚醒和MiPush,但是只對MIUI及兼容的部分應(yīng)用有用。

●剩下的就是其它諸多推送了,BAT自家的推送機制,極光,蝴蝶云,智游,個推等等。假如很不幸的,你的手機上安裝了BAT全套,又安裝了帶各種不同推送提供商的應(yīng)用,那就等著感人的耗電,內(nèi)存占用與無數(shù)的后臺喚醒吧……
[page]

3、優(yōu)化

●很不幸的是,到現(xiàn)在,兩個平臺都仍然有大量的應(yīng)用跑在單核單線程上,對雙核,多核以及64位的利用非常之低,甚至沒有。這個時候A8較高的單核性能能帶來更好的體驗。但如果應(yīng)用對多核做好了適配的話,在Android上流暢性是可以花樣吊打iOS的。

4、流媒體視頻

●Android在這方面流暢度要好于iOS

(1)Android支持傳統(tǒng)流媒體格式,可以用已經(jīng)成熟的CDN

(2)iOS需要使用TS流,需要額外準(zhǔn)備CDN線路,部分線路支持還不佳

(3)Android4.0后使用HLS協(xié)議并且實現(xiàn)P2P

(三)ROM

1、iOS并不存在這個問題,不講。

2、Android存在的問題是,有太多廠商太多版本的ROM了,每個廠商都對底層做些修改。所以簡而言之就是鬧心,負分優(yōu)化大家見得多了我就不說了。

PS:知道為什么國內(nèi)定制越深度的ROM適配AndroidL越慢嗎?就是因為底層的東西改得太多5.0把運行時改了工程量很大難以在保證功能健全的情況下快速適配。

3、驅(qū)動(不是很懂,希望補充)

七、最后我們來說說設(shè)計

1、iOS的人機交互設(shè)計還是很值得稱道的,畢竟是帶領(lǐng)我們進入了MultiTouch時代,從iOS6的擬物到iOS7/8/9的扁平高斯模糊毛玻璃為代表的設(shè)計路線,都可以說是一套非常值得令人尊重的設(shè)計方案。它是比較早把流暢的動畫引入設(shè)計語言的一個方案,也在長期的驗證中逐漸發(fā)展成熟。

2、以HoloTheme為代表的AndroidDesign,進化出了MaterialDesign,對整個UI的把控能力達到了一個非常高的水準(zhǔn)。陰影,漣漪波紋,Z軸等等,都顯示出Google對細節(jié)一絲不茍的把控,且這套UI比較好的解決了桌面,網(wǎng)頁,移動端的交互統(tǒng)一性。

八、總結(jié)

1、總之,對比下來我們會發(fā)現(xiàn),兩種生態(tài)在健康的情況下其實軟硬技術(shù)實力都是處在同一水平線上的,互有長短。硬件Apple并沒有弱于Android,更談不上軟件的神優(yōu)化。但是,如果Android沒有GoogleServices,就相當(dāng)于失去了Android的靈魂,失去了GooglePlay的優(yōu)秀資源,失去了GCM推送帶來的流暢省電,失去了GoogleCloud在內(nèi)的很多很多核心競爭力。不卡或會卡,本質(zhì)不是系統(tǒng)的問題,而是什么樣的環(huán)境,用戶著什么樣的程序。

2、iPhone就好像是一輛F1方程式賽車,里里外外都精心設(shè)計過??雌饋碇挥?.6L的排量,但實際上卻是一顆上千馬力的心臟,但這也決定了他只能在專門設(shè)計的方程式賽道上跑,而且跑的很歡。一旦脫離賽道(越獄),就各種不安全。

3、Android則好像是各種其它跑車,硬件的定制化程度極高,既有入門級的現(xiàn)代Coupe,尚酷R,也有比肩F1的布加迪威航,法拉利,蘭博基尼,更有小眾的科林賽格,優(yōu)雅的瑪莎拉蒂等等……如果再適合他們的路況上跑,就算是入門級,輕松破200km/h也不是什么難事,即使無法比肩F1,也足夠體驗駕駛樂趣,旗艦則可以和F1全面硬抗,彎道,直道,加速,都能爭個高下,甚至還可以玩一些F1做不到的事情,比如彈射起步,漂移等等。

4、安卓則是……則是幾個改裝廠把這些跑車們自行改裝,有的廠商改的好,有的改成渣,拉到了坑洼不平的土路上,還時不時來點路障,這就算起步跑得溜,但久了對整車肯定不好。

相關(guān)閱讀:

逆天設(shè)計:蘋果新Touch ID讓Android好無語
視頻完爆差異化:蘋果 CarPlay VS 谷歌 Android Auto
五問五答摸清Android Wear手表“疑難雜癥”

要采購晶體么,點這里了解一下價格!
特別推薦
技術(shù)文章更多>>
技術(shù)白皮書下載更多>>
熱門搜索
?

關(guān)閉

?

關(guān)閉