為什麼有些四核手機會卡,而 iPhone 一般不卡?
以前看過一篇文章,大致說下吧。
在內存帶寬不夠而解析度過高的情況下,無論處理器快到什麼程度系統都會卡。在安卓的早期,WVGA 的解析度只有 800*600=48 萬像素,對內存帶寬壓力不大。
但是隨著安卓解析度的飆升,帶寬就成為問題。那麼多少帶寬合適呢?蘋果產品可以做個參考。
蘋果的The New iPad (第三代iPad)是個很有意思的短命產品,它使用的處理器和解析度可以做一個參考。A5X 處理器其實只是一個雙核 A9 的處理器,主頻還不高,和 MT6577 一個檔次(安兔兔跑分約為5000左右)。
而能支持 The New iPad 流暢運行的是 A5X 強大的圖形性能和內存帶寬,A5X 的內存帶寬高達 12.8GB/S。
The New iPad 的解析度是 2048*1536=314 萬像素,也就是說,蘋果認為每 100 萬像素提供 4GB/S 的帶寬可以保證基本流暢性。
和 A5X 而同時期的 A9 四核處理器帶寬只有 4.2GB/S,6.4GB/S。他們用 1280*720=92 萬像素的解析度,每 100 萬像素可以提供超過 4GB/S 的帶寬,基本也能保證流暢。
而到了 1920*1080=207 萬像素的時候,就只有高通的8064 的 8.3G/S 帶寬勉強可以支撐了。
這就是為什麼去年2013年第一代 1080P 智能手機都用 APQ8064 的原因。
最新的驍龍 801(8974AC)內存帶寬高達 14.9GB/S,支持 2560*1440=368 萬像素的解析度,剛剛過了 4GB/S 每 100 萬像素的底線,也有了流暢的基礎。這是為什麼最新的幾款手機敢於支持這個解析度的基礎。
但是,市面上其他幾款處理器就很不樂觀了,MT6592 的帶寬大約是 5.3GB/S,支持 720P 不是問題,但是支持 1080P,每 100 萬像素只有 2.56GB/S。無論啟動器怎麼優化都很難流暢,這就是八核心搭配1080P反而卡頓的原因。
同樣,之前華為海思的 K910 的帶寬是 6.4GB/S,比 MT6592 要好一些,但是帶 1080P 也會有些吃力。果粉們果然是都有一顆寬容的心么?。為什麼我的iPad1自從5.0之後,自帶輸入法就這麼的卡?非得裝了搜狗才好了很多。另外我的GS2還真沒有遇到過卡的情況,內存使用也控制在500MB左右。
@王方 的回答是一點。Android的應用除了能註冊Activity以外還可以註冊Service的。Service就是無論Activity是否進入後台,都能獲得CPU時間完成特定操作的。像通知欄監聽、推送信息獲取、定位服務、MP3播放等都可以放進去執行。而Android的訪問控制和許可權就是小兒科(比如安裝一個應用,居然得全部接受它提出的所有許可權申請;又比如已安裝的應用的Service是默認自動啟動的),加上Android的軟體基本都是免費的,這些軟體在後台運行了大量佔用內存和CPU的Service,不僅耗電而且耗流量。這一點iOS就設計的非常好,除了數據下載、音樂播放等幾個少數任務外,不允許程序在後台運行,節電節能。
還有一點就是越強大的健壯性就相對帶來越低的效率。比如你寫一個讀數據的代碼,如果數據是嚴格按固定格式給的,那麼幾組讀入語句就能完成任務,而如果數據是散亂的不規整的,除了要處理空白的文體,還要智能地匹配、還原樹結構等。類比過來,iOS是Apple硬體、軟體一手抓的,它的Kernel只要能服務特定的硬體就行了,抽象層次少,判斷語句少等等,執行效率就會高很多。而Android要考慮健壯性的問題,所以做不到那麼高的效率。
以Fruit Ninja為例,我在GS2上永遠切不出iPhone的感覺,我就覺得觸摸軌跡有一種非常輕微的延遲。
同時,iOS在App申請過量內存後居然會強制關閉App這一點,真是難以想像的設定。(這裡也體現了Android的最初設計的工程師們,還是多少透著點Windows的思路)iphone 不卡是因為當它執行當前任務的時候,其他的任務都暫停掉了,而android之類的好像不是。PS:我說的話不是很靠譜。
一、安卓和iOS對內存需求的對比
一直以來,蘋果的iOS工程師對iPhone的內存佔用要求都極為苛刻,為什麼這麼干呢?難道為了節省成本嗎?非也。蘋果哪怕硬體成本再貴,都會有人買單,原因你懂得。
蘋果這麼做就是為了避免讓自己陷入安卓現在堆硬體的泥沼之中。堆硬體很容易,但系統優化卻非常不易。誠然,這些年來安卓和蘋果的配置都大大的提升了,但是對內存的優化,安卓卻遠沒有蘋果做的好,我們不妨來看一組數據吧。
iPhone3G/3GS 內存:128M/256M
iPhone 4/4S 內存:512M
iPhone 5/5C/5S/6/6 Plus 內存:1G
從2008年的iPhone 3G發布至今,iOS系統對內存的優化的越來越好,你可以看到iPhone 5/6兩代手機對內存的需求都控制在了1GB。反觀安卓,我都不用舉例了。現在安卓手機RAM都提升至2GB了,旗艦級的新機更是直接奔上了3GB。當然1GB內存的機子也有,不過大多都用在主打低端市場的千元機。什麼?512MB內存也能用,不信你同時打開QQ、微信和淘寶,我保證你的手機卡成狗。
二、蘋果1G內存為何能完爆3G的安卓?
安卓系統內存的需求變得越來越大之外,這些年呈現出井噴的趨勢。但除此之外還有一點不能忍,那就是安卓手機無論配置多高用一段時間系統還是會卡,而iPhone則不會遇到這個問題,這到底是為什麼呢?其實這要分兩方面來解釋。
1、系統運行機制的不同
安卓手機應用都是通過Java來完成,而用戶關閉應用的時候度要涉及一個過程,那就是Java垃圾收集機制(garbage collection),也就是說如果一個用戶要關閉應用,在這中間Java垃圾收集需要大量的內存來工作(大約是4-8倍),如果機器本身內存不夠它調配的話,速度自然就慢下來了。
雖然iPhone依然是1GB內存,但iOS系統跟安卓有本質的區別,其過程中也不會涉及所謂的垃圾收集機制,而是一種和微軟的WP系統類似的「墓碑機制」,也可以說是「假後台」,噴子們別噴,蘋果沒抄襲微軟,微軟有沒有抄襲蘋果我就不知道了。
iOS系統的特點就是集中所有的硬體資源去保證當前運行的軟體的流暢,APP一旦進入後台了,它就是將APP凍結或者叫休眠。說到這裡可能有人會問了,那為什麼QQ和其他APP後台了依然能收到消息,這是以為iOS有很好的後台消息推送機制,你收到的消息其實是通過伺服器推送給你的。這也就是解釋早期的時候,蘋果伺服器(在國外)不穩定的時候,由用戶掉線或者漏接消息的情況。
但是現在伺服器不穩定的這個情況不復存在了,良好的推送服務和偽後台機制,可以讓你的蘋果手機在1GB的情況下流暢到爆,因為1GB完全是能勝任的。
2、軟體廠商對APP的優化
除了系統運行機制的不同,安卓手機越用越卡跟現在很多的無良的APP開發者有關。現在越來越多的APP開發者濫用安卓的許可權,基本所有的軟體都在濫用開機後台自啟動的許可權,並美其名曰是為了讓你打開軟體的速度提升,其實是為了讓自己時刻能控制安卓手機,並及時推送廣告消息。
ROM基地小編我在雙十一那天手機開機後什麼都沒做,一晚上就收到了15條推送消息。這樣喪心病狂的事情,相信不止我一個人碰到吧,很多朋友應該都深有感觸吧。
而蘋果則不同,iPhone的軟體都是在蘋果商店下載的,就算是越獄了,你下載的軟體大部分還是正版的APP。蘋果對APP上架極為嚴格,所以蘋果的APP開發者想瘋狂加入廣告插件不但可能,開發者反倒要絞盡腦汁去把APP優化到極致。
另外有一點,也就是安卓一直以來飽受詬病的碎片化問題。一個安卓APP要讓那麼多不同尺寸、不同解析度、不同硬體的安卓設備都能跑起來已經是非常不容易了。前段時間,ROM基地還報道過一開發者為了測試APP,狂買了600多款不同的安卓設備。反觀蘋果,就那麼幾款手機,移植適配起來相對容易多了,軟體開發者也有更多的精力去優化自己的APP。
3、iOS優先處理觸摸事件
另外,iOS的優勢還體現在觸摸體驗上。iOS系統是優先處理觸摸事件,哪怕你的手機的內存快撐爆了。但是你在觸摸操作蘋果手機的時候,依然能感覺到很流暢。這時候安卓手機估計已經卡到爆了,你不清理內存殺進程恐怕就要坐等死機了。
沒必要說啥,說絕對不卡,一群蘋果黑一下子就會出來挑你說話的刺了。
你該這麼說,假如卡不卡的打分是100分的話,蘋果可能能夠達到95分以上,因為確實是卡的時候很少,同時流暢度超高。那些四核手機可能就70-80分左右。你這樣比較的話,人家就會換個角度,憑啥你這麼打分?打分的基礎是多少?為啥70-80分?這個要從兩個系統的app設計說起。
Android給app非常大的許可權,甚至可以監測甚至控制通話,簡訊,修改系統文件,查看修改其他程序存儲的文件,而這些只需要一個root許可權。IOS是完全封閉的,每個app都是完全獨立的,不能修改系統,不能訪問其他app的信息,每個app的CPU和內存分配也非常有限。
從UX來說(對不起我更習慣於稱用戶體驗為UX),iphone一塊觸摸屏就有三塊晶元為其服務,而且佔用了很大的內存,這個進程的級別也是最高的。所以,有時候,IOS的程序會崩潰,但是操作上絕對不會卡。Android是開放系統,想幹嘛幹嘛,IOS是封閉系統,所有東西都要經過蘋果審查,這是根本原因。不見得iphone就不會卡,雖然軟體硬體大部分已經兼容很好了,iphone並不完美。
1,蘋果硬體統一
2,開放的api少3,沒有虛擬機,效率折損低4,生態鏈好5,app開發框架比較固定安卓會卡的原因1,應用層級比較複雜
2,虛擬機的效率沒有直接在系統層級效率高3,部分優化不到位4,後台的servers 機制會吃一部分內存不過如今安卓的流暢度也很高,開發者水平也比較高,安卓就是用著爽,自定義程度高,蘋果是比較省心的那種,不過蘋果也會掉幀,有的也會閃退,並不能說誰優誰劣ios封閉,對硬體控制好,安卓其實也不卡,但是外面版本太多,安卓還是linux,底層應該不慢
你什麼四核機型?你用官版ROM還是哪個小組出的ROM?你刷過什麼內核?什麼都不說就到在這裡說安卓很卡,我只覺得你是在這裡間接挑安卓刺兒,現在四核的手機最早的算是One x,火腿腸的ROM多了去了,誰知道你刷的系統是誰製作的!如果你是說Galaxy III的話,我只會覺得你在放P,而且很懷疑你是否用過它,以現在官方的4.0.4系統的流暢程度,還不至於你所謂的卡,抑或你刷某不知來頭的ROM或內核或桌面啟動器導致硬體兼容問題出現的卡頓。至於魅族MX,我想前幾天你應該沒有特意飛香港去排首發會就不討論了!
推薦閱讀:
※周鴻禕稱:「因純粹手機硬體靠銷售獲益的時代已不再,通過與互聯網結合,將一次性賣硬體變為長期的一種服務收費,這是未來的趨勢。」這個判斷是對還是錯,如何理解這個趨勢?
※iphone8就算是全面屏,蘋果也不見得能領先同行
※2017年還在用iPhone 4S手機是怎麼樣的體驗?
※iPhone 為什麼不做成雙卡雙待?
※iPhone?8難產推遲發布?魅藍note6攜P25蓄勢待發