<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<wbr id="eoqoe"></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><label id="eoqoe"></label></wbr>
<button id="eoqoe"></button>
<wbr id="eoqoe"></wbr>
你的位置:首頁(yè) > 測試測量 > 正文

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

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

【導讀】對于iOS和Android系統,人們總是覺(jué)得Android系統用起來(lái)會(huì )出現卡頓現象,所以偏愛(ài)于iOS。事實(shí)上,人們都對iOS和Android系統有著(zhù)太多的誤解,導致誤會(huì )越來(lái)越深。本文就來(lái)為你揭曉一切真相。

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

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

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

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

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

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

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

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

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

四、Apple和Android陣營(yíng)硬件對比

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

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

2、CPUCache方面。

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

3、GPU方面。

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

4、晶體管數量。

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

五、系統與運行機制層面

(一)內核

1、又要開(kāi)始拿Linux和Unix說(shuō)事了,但很不幸的是,流暢這件事跟系統內核一點(diǎn)關(guān)系都沒(méi)有。

2、說(shuō)個(gè)老梗:

●iOS基于Unix所以是Touch(響應觸摸操作)——Media——Service——Core架構

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

●所以iOS要比Android響應的快,所以iOS更流暢云云

●然而這個(gè)東西是2.x時(shí)代的,Google早就改掉了……我也不知道這種Unix內核性能優(yōu)于Linux的論調為什么時(shí)不時(shí)還會(huì )冒出來(lái)……反正兩者都不是實(shí)時(shí)操作系統(RTOS)。

(二)運行時(shí)(Runtime)

1、Android基于Java虛擬機,前段時(shí)間還因為這個(gè)Google和甲骨文吵上了法庭。算了回歸正題,我們主要要說(shuō)的運行時(shí)有Dalvik和ART(AndroidRuntime)兩種,Dalvik是Android于A(yíng)ndroid4.4之前所使用的默認Runtime,ART則是AndroidRuntime,是在4.4時(shí)引入的一種新的運行時(shí),在L及以上版本取代Dalvik成為默認運行時(shí),在GC機制、JNI和Stacksize上都與dalvik有著(zhù)很大的不同。Dalvik屬于JIT(Jusi-in-time)編譯器,ART屬于A(yíng)OT(Ahead-of-time)編譯器。反正說(shuō)了這么多你們只需要知道ART可以直接調用底層效率更高就對了。

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

(三)渲染流水線(xiàn)

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

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

●垂直同步機制(減小應用端開(kāi)始繪制到實(shí)際屏幕更新的延遲)

●GL窗口緩存繪圖命令的異步執行(減少應用主線(xiàn)程的阻塞)

但很明顯Google還不滿(mǎn)足,于是在A(yíng)ndroidL引入了獨立的GPU線(xiàn)程,并允許主線(xiàn)程和GPU線(xiàn)程并發(fā)。也就是說(shuō)GPU線(xiàn)程在繪制第N幀的DisplayList時(shí),主線(xiàn)程已經(jīng)可以同時(shí)生成第N1幀的DisplayList,并且允許GPU調用不同參數繪制同一個(gè)DisplayList,簡(jiǎn)單的說(shuō)就是提高了繪制過(guò)渡動(dòng)畫(huà)的效率。

這里說(shuō)一個(gè)Google的黑科技,ProjectSky-DartonAndroid,完全脫離Java的一套東西,他們的目標是把渲染時(shí)間壓縮到8ms以?xún)?,也就是等?20fps。但他們現在做出的Demo里每幀平均渲染時(shí)間是1.2ms/f,也就是等效驚人的833fps……

2、iOS不開(kāi)源……(又來(lái)了)但是,我們仍然可以推測他的渲染流水線(xiàn)和WebKit類(lèi)似,因為WebKit存在大量Apple的參與代碼。

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

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


1、BAT

●Baidu,alibaba,tencent,號稱(chēng)Android流暢度三大殺手

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

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

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

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

(4)微信,Android4.0.3,APIlevel15

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

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

●然后如果打開(kāi)開(kāi)發(fā)者選項里面的showGPUoverdraw(雖然不一定是GPU繪制的),你們就會(huì )發(fā)現各種嚴重的overdraw,尤其是阿里巴巴系列的應用,整個(gè)頁(yè)面濫用Webview,導致了嚴重的重復繪制。

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

●假如有第三方客戶(hù)端的話(huà),其實(shí)往往有非常優(yōu)秀的遵守DesignGuideline的應用,比如新浪微博的第三方客戶(hù)端們,四次元,Fuubo,Smooth等等。

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

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

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

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

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

3、優(yōu)化

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

4、流媒體視頻

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

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

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

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

(三)ROM

1、iOS并不存在這個(gè)問(wèn)題,不講。

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

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

3、驅動(dòng)(不是很懂,希望補充)

七、最后我們來(lái)說(shuō)說(shuō)設計

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

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

八、總結

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

2、iPhone就好像是一輛F1方程式賽車(chē),里里外外都精心設計過(guò)??雌饋?lái)只有1.6L的排量,但實(shí)際上卻是一顆上千馬力的心臟,但這也決定了他只能在專(zhuān)門(mén)設計的方程式賽道上跑,而且跑的很歡。一旦脫離賽道(越獄),就各種不安全。

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

4、安卓則是……則是幾個(gè)改裝廠(chǎng)把這些跑車(chē)們自行改裝,有的廠(chǎng)商改的好,有的改成渣,拉到了坑洼不平的土路上,還時(shí)不時(shí)來(lái)點(diǎn)路障,這就算起步跑得溜,但久了對整車(chē)肯定不好。

相關(guān)閱讀:

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

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

關(guān)閉

?

關(guān)閉

久久无码人妻精品一区二区三区_精品少妇人妻av无码中文字幕_98精品国产高清在线看入口_92精品国产自产在线观看481页
<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<wbr id="eoqoe"></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><label id="eoqoe"></label></wbr>
<button id="eoqoe"></button>
<wbr id="eoqoe"></wbr>