餘承東稱方舟編譯器可以讓華為手機性能超過蘋果,你怎麼看?

華為手機功能教程


餘承東是一個很有趣的人,給人的印象是愛說大話。但至少到目前為止,餘承東“吹過的牛”都實現了,也就是餘承東的“說大話”,基本上都是立足在華為有能力實現的基礎上。有華為強大的技術作為支撐,餘承東才能將自己屢屢驚人的“大話”變成現實。

那麼,餘承東稱方舟編譯器可以讓華為手機性能超過蘋果,應該是基本可信的。即使沒有超過,那也是不相上下,或者是非常接近。

蘋果的iOS系統確實好用。但iOS系統也不可能永遠都是最先進的。可能在智能機發展前期,蘋果的iOS系統可以一招鮮吃遍天,但伴隨技術進步,總有新的系統可以更加先進。目前來說,或者華為的方舟編譯器可以做到,或者已經接近蘋果的iOS系統。

因為方舟編譯器,並不是一個簡單的編譯軟件,而是與Android系統充分結合的一種底層技術,也就是可能進一步完善Android底層編碼,這樣華為的方舟編譯器就更有意思了。

一個現代編譯器的主要工作流程是:源代碼 (source code) → 預處理器 (preprocessor) → 編譯器 (compiler) → 目標代碼 (object code) → 鏈接器 (Linker) → 可執行程序 (executables)。

方舟編譯器如果能夠實現從源代碼到可執行程序之間的轉換,將其他中間過程省略,或者是濃縮,那麼就能實現更快更好地編譯,簡單地說就是減少了中間環節,用我們常說的減少了中間商。

我們做一個簡單粗暴的類比:以前一個產品流通到市場終端,需要經過複雜的經銷體系,早期銷售體系是全國經銷→ 大區經銷→ 省級經銷→ 市級經銷→ 縣級經銷商→ 終端網點→ 消費者。但電子商務直接省略了中間環節,廠家→ 商務平臺→ 消費者,這就是網絡產品價格更便宜的一個重要原因。

當然,這種類比肯定不準確,也不一定正確,但如果能夠從源代碼帶可執行程序直接有更好的鏈接,那麼就能夠實現餘承東所說的,提高24%的流暢度。

技術不斷進步,一切皆有可能,華為超越蘋果就是這個方舟編譯器,也可能是下一個什麼樣的重大發明。當然,蘋果也在進步,反正競爭總是帶來更好的產品。


波士財經


一般的安卓程序就是java語言編寫,靠虛擬機解釋運行,所以效率很低。而方舟編譯器實現的是將java等高級語言(可能混合了其它高級語言)直接翻譯成二進制代碼,讓CPU直接讀取執行。

對比不用編譯器的app,去掉了虛擬機的讀取到內存,解釋並生成cPu的執行語言文件,由CPU執行後再釋放臨時文件的過程。這樣效率就提高了很多,減少了步驟,也佔用更少的內存(虛擬機要佔用內存,虛擬機也要好費CPU的的資源)。

對比IOS看:,ios用的是objct C語言,它生成的App實際上都是可執行程序,而不是解釋性的語言文件,所以執行效率高,運行速度快,佔用內存少。

所以,安卓的經過app編譯後,運行效率肯定會提高,加上本身安卓堆的硬件更多,運行起來比ios絲滑也不是不可能。


Migod


感謝您的閱讀!

餘承東說:方舟編譯器可以讓華為手機的性能超過蘋果iOS!其他廠商可沒有樣的能力,只有我們華為有這樣的能力。難道,方舟編譯器讓安卓系統超過了iOS系統嗎?

在一段比較中,我們也確實看到了華為P30 pro和iPhone xs max之間的比較,我們發現同樣的時間,華為P30 pro要比iPhone xs max快的多,而且在開啟的15個App中,華為P30 pro有13個啟動更快。

那麼,方舟編譯器真的這麼厲害嗎?我們可以看它的原理是什麼?目前關於方舟編譯器的原理都處於猜測階段,而且還沒有開源。不過,我們可以猜測如下:

我估計它可能和ART類似,不過ART是邊解釋並運行,而方舟編譯器可能是在編譯以後,直接,編譯成機器碼,減短了編譯時間。所以,系統操作流暢度能提升24%,系統響應能夠提升44%。

當然,目前的方舟編譯器的只是在EMUI9.1中使用,提升了系統性能,我們還是比較好奇:到底是隻能運用在華為手機上,還是能夠運用在所有的安卓手機上?

不過,安卓系統的運行機制,和蘋果運行機制不同,這就決定了,如果華為不能改變安卓運行機制,估計和ios還有距離。


LeoGo科技


日前上海發佈會上,華為推出的方舟編譯器可謂是意外的驚喜。根據華為的介紹,方舟編譯器能夠從程序編譯與運行機制上提升安卓系統的流暢度,不僅引來科技粉關注,許多小白也很關心,這款編譯器究竟能夠給安卓帶來什麼變化。



畢竟,天下苦安卓卡頓久矣,從測試版到現在,已經進入Android 10.0版本,雖然流暢度一代一代有所提高,但是相比隔壁的iOS,安卓體驗弱的不是一點半點。發佈會上餘承東表示方舟編譯器可讓操作系統流暢度提升24%,給安卓黨帶來許多期待。



就連谷歌一直都未能搞的太定的事,方舟編譯器怎麼樣實現?想要了解其中具體的邏輯,我們先從什麼編譯器說起。

啥是編譯器?

簡單的理解,不管編程怎麼變,最終編程得到的可執行二進制程序都是給CPU運行的。使用二進制直接編程非常不現實,因此計算機領域誕生了彙編語言(用一個符號來代替一串二進制),接著誕生C語言,C語言之上還有更高級語言,譬如:C++、Java、C#、bash等等。

簡單講,編譯器就是將“一種語言(通常為高級語言)”翻譯為“另一種語言(通常為低級語言)”的程序。

其中,高級計算機語言便於人編寫,閱讀交流,維護;現在大多數程序員都不需要複雜的計算機知識,掌握一門或多門高級計算機語言就可以進行編程就是這個道理。機器語言是計算機能直接解讀、運行的。編譯器是將彙編或高級計算機語言源程序(Source program)作為輸入,翻譯成目標語言(Target language)機器代碼的等價程序。

簡單的理解,編譯器就是承上啟下的中間層,連接著高級語言和機器語言,應用程序是否能夠直接編譯,決定了流暢度和穩定性,這就是Android 平臺與iOS平臺在體驗上巨大差異的關鍵。

作為基於Linux的自由及開放源代碼的操作系統,Android 平臺的絕大多數應用是使用Java語言寫的,由於Java語言獨特的虛擬機機制(簡稱JVM),CPU不能直接理解彙編指令。早期Android運行程序過程中,每運行一行Java語言的虛擬機指令都需要即時編譯為CPU識別的機器碼,這就是安卓卡頓的根源;在安卓歷代的版本,圍繞這一問題提出很多解決方案(後面會詳解),卻都很難徹底解決。

反過來看,iOS從誕生之初就採用LLVM(Low Level Virtual Machine)編譯器,LLVM是構架編譯器(compiler)的框架系統,以C++編寫而成,是一個模塊化和可重複使用的編譯器和工具技術的集合。應用程序(Swift語言編寫)能夠直接編譯成機器碼,無需像Android需要一箇中間層過渡,程序可在手機CPU上直接運行。

你明白了JVM與LLVM的工作機制,就知道為何同樣的手機內存,為何iOS的流暢度甩掉Android幾條街。在用戶的日常使用中,內存只有2G的iPhone,其流暢度往往遠超4G、6G的Android手機。

安卓系統想要實現同iOS一樣的高效,就要解決JVM,解決程序直接編譯成機器碼的痛點,方舟編譯器最大的亮點,就是圍繞這一問題進行優解(後面會詳解)。

歷代安卓的努力

我們都知道Android系統是以Linux系統為底層構建的,Android系統是開源(源代碼公開),因此這涉及到對不同硬件配置設備的適配問題,而iOS的閉環特性則不存在這一問題。谷歌為了降低應用開發難度就在Linux底層之上,構築了一個基於JIT的Dalvik編譯器。



也就是說,在早期的安卓系統上每次運行應用時都需要虛擬機的一次編譯,每次執行應用的時候虛擬機都會將程序的語言由高級語言編譯為機器語言,這樣設備才能夠運行這一應用,相比iOS的機制,多箇中間層使其執行效率大大下降。

後來受Oracle起訴侵權影響,以及谷歌對提效安卓系統的內在推動,開始著手開發Dalvik的替代品。

2014年穀歌在android 5.0版本中使用了ART來正式替換Davlik。相比於運行一行應用就要進行編碼的Davlik,ART是一個AOT編譯器,所謂AOT (Ahead of Time)是指在運行以前就把字節碼靜態編譯成二進制機器碼,擺脫了每次運行應用都要虛擬機即時編譯的冗餘過程,相比JIT 能夠提高執行效率。



但是,問題依然存在,替換Davlik的ART編譯器雖然實現了Java字節碼的靜態編譯,受Java語言本身的限制,特別是類的動態加載相關的特性,仍然依賴JVM在運行時進行解釋執行或編譯執行的能力。

也就說,Android演變為包含了解釋執行+JIT+AOT的混合模式,雖然流暢度有所提升,但相比iOS仍有不小的差距,卡頓問題依然存在。

除此之外,安卓的GC(Garbage Collection,垃圾回收機制)同樣也為系統帶來卡頓難題。當安卓系統上需要分配的內存空間不再使用的時候,Java虛擬機將調用GC來回收內存空間,而GC本身是個全局暫停事件,當GC進行時所有的應用線程都會停止,直到回收操作完成,這是安卓用戶經常遭遇莫名卡頓的原因之一。



方舟編譯器做了什麼?

從公開的信息分析,華為的方舟編譯器也基於AOT,不過方舟編譯器採用的可能是創造性地靜態編譯了動態語義,就是把所有的字節碼都被提前編譯為二進制代碼,也就是說完全消除虛擬機的影響,讓JVM消失,程序完整的在手機CPU上直接運行,就能比肩iOS一樣的高效。

此外,方舟編譯器還通過編譯優化算法,將代碼編譯出的機器指令最優化,以此來提升代碼執行效率,當然這個是加分項,最關鍵的還是程序在手機CPU直接運行。



從上圖的實現機制中我們能夠看到,方舟編譯器縮短安卓上應用運行的路徑,在安卓生態上實現類似iOS的LLVM(Low Level Virtual Machine)編譯器的機制,相比android ART編譯器實現對流暢度的提升。

方舟採用了引用計數法(RC,Reference Counting)來進行內存的回收,來避免GC集中式的回收帶來的系統卡頓。

這個算法就是給對象增加一個引用計數,每當對象被引用時,就將該對象的引用計數加一。所以當一個對象的引用計數為0的話,那麼就可以認為這個對象是可以回收的。並採用消除環算法(消除對象互相引用帶來的無法回收問題)來配合RC,以實現內存的實時回收。將集中式的處理,變為分佈時間打掃,避免出現全局暫停事件。



市場上雖然很多廠商強調對安卓深度定製,但有能力,並且有魄力對安卓底層機制改動的企業並不多,尤其是像華為這樣在編譯器層面實現整體的優化。華為能夠推出方舟編譯器,一方面,得益於華為深厚的技術和人才積累,自EMUI 5.0以來便力圖通過底層優化提升系統性能;另一方面,得益於華為一直聚焦用技術創新提升用戶的使用體驗,從F2FS文件系統、GPU Turbo到方舟編譯器,層層深入對安卓系統的優化。


另外,華為已表示方舟編譯器將面向業界全面開源,提供完整的編程框架和應用開發工具鏈,並開放給第三方夥伴構造開發者生態,意味著未來將有更多開發者可參與到方舟編譯器的開發、使用,對於提升整個安卓生態的體驗帶來很大的可能性。

不過,最終安卓系統能否追趕上iOS,還有等待市場的進一步驗證。筆者作為資深的安卓黨,期待方舟為安卓帶來流暢度的提升,當安卓用戶不再去羨慕iOS的流暢,在中高端市場安卓手機們才能更好的同iPhone競爭。


牧離子


感謝閱讀!

4月15日華為官方網站上宣佈了EMUI 9.1 。華為宣佈這是全新主題,以瞬間美學為設計靈感,從官方圖片上看,確實絢麗。

EMUI 9.1除了升級了視覺體驗,這次宣佈的重磅消息是華為對EMUI 9.1進行了DNA級別的優化:方舟編譯器!

01 安卓為什麼總是卡頓?

安卓的卡頓先打個比方說:你跟外國人聊天講漢語,總得經過一個翻譯把漢語給你翻譯成英語一樣,能不卡頓?能不反應慢嗎?


安卓系統的卡頓一直被網友們吐槽,也是大家放棄安卓選擇iPhone的主要原因。



02 方舟編譯器

接著前面的比喻,用方舟編譯器就是:你把翻譯辭掉,你自己吧啦吧啦的用外語跟外國人聊天!既省錢又快速!

同樣的,方舟編譯器省掉“中間層”,從底層改變安卓系統的編譯方式,以高效的靜態編譯代替高資源消耗的動態編譯。所以,省資源又運行快!



03 華為的野心

我認為華為在下一盤很大的棋:

  • 第一步,現在國內安卓手機都是採用安卓系統,為解決卡頓問題其他廠商會紛紛採用方舟編譯器!
  • 第二步,手機APP廠商,手機硬件廠商開始適配方舟編譯器。
  • 第三步,當各方適配了華為的方舟編譯器,華為自己研發的麒麟OS就會粉墨登場!從上層都底層形成了手機的整個生態環境。各大手機廠商採用麒麟OS!

華為手機要想超過iPhone的流暢性,我覺得短時間內很難做到,畢竟iPhone根正苗紅,是蘋果自己家的系統。

不過,還是真要給華為的創新研發能力點贊,中國人的驕傲!希望多一點像華為的企業!

如果安卓解決卡頓問題,你會放棄iPhone買安卓手機嗎?歡迎留言!


AI科技猿


感謝邀請:我是科技數碼隨時答,很高興能回答這個問題

餘承東稱方舟編譯器可以讓華為手機性能超過蘋果,你怎麼看?

每一次發佈會上面說的東西,我們在下面使用的時候總是達不到理論值,不管是拍照還是手機性能,以及跑分等等,所以對於現在很多廠商,不管是華為還是小米等等廠商說的話,其實很多消費者已經不相信了,對於華為的方舟編譯器雖然看好,但是希望我們用的時候可以和他發佈會說的一樣系統流暢度提升24%,如果真的可以達到華為在發佈會上面說的,確實和ios系統有的一拼,但是實際使用和宣傳我們都知道。。。。。

方舟編譯器的原理是什麼:

編譯器我們可以簡單的理解為工具,因為我們常說的程序員寫程序所使用的編程語言,以及程序在CPU上執行時的語言,是完全不同的。因為CPU執行的是彙編語言,那麼我們就需要到把高級編程語言轉化成彙編語言的這個過程所需要的工具,就叫做編譯器。其實簡單的來說就像是我們需要把文言文轉化成為白話文,中間要藉助的詞典或者是資料就是我們所講的工具編譯器。

安卓系統本身因為碎片化嚴重,而且為了保證兼容性採用的是虛擬機,所以不得不在手機上完成程序編譯。傳統做法是在應用安裝時或者系統空閒是進行編譯,可是手機端的資源原本就十分有限,所以“邊解釋邊運行”的執行方式勢必會造成大量的隨機卡頓,當然現在也是這樣的方式,只是現在有了很大的提升,但是有時候還是會有卡頓。

方舟編譯器就是將傳統的app源代碼打包成apk的方式進行了優化,從而使得app在安卓系統上可以實現全程使用機器碼執行程序,從而改善了安卓app原本的“邊解釋邊執行”造成的系統卡頓。而蘋果的ios系統執行程序時使用的是CPU可以直接理解的機器碼,無需解析過程,這也是安卓系統流暢度不如ios的主要原因。


總結:當然華為的方舟編譯器能做的事,實際上已經遠超“編譯器”這個概念了。據說方舟編譯器的實現原理,是把app的源代碼重新編譯成不同於安卓原本的打包格式。這件事情本身來說的並不是很難,但是難點在於文章開頭提到的優化到什麼程度是否和發佈會說的一樣,第二點就是各大廠商的參與程度,決定這件事情的可行性,所以我們現在只能拭目以待,所以是否可以超越ios系統還是一個未知數。


回答完畢

歡迎留言發表不同的看法和想法:

科技數碼隨時答


蘋果的iOS系統之所以運行流暢,所有APP在上面的使用感受特別好,主要源於也是類似於方舟編譯器的工作原理。

而Android陣營的手機,由於品牌眾多,型號眾多,千差萬別的硬件配置,導致在安卓平臺上,所有APP包括安卓系統,有著天然的烈士。兒童而通過方舟編譯器之類的軟件,對所有APP,進行進一步優化和對平臺進行適配,會勁會大大提高軟件的流暢度和系統運行的流暢度。這也是目前解決安卓手機,使用感受,不如蘋果手機的最好辦法。


嗨老樂兒


餘承東稱方舟編譯器可以讓華為手機性能超過蘋果,你怎麼看?這就是華為的底氣,能夠把安卓系統給優化到超過iOS的性能,確實一件很了不起的事情。也許未來iOS的相對衰落也並不是不可能。

被華為稱為一項革命性的突破,顯然方舟編譯器不是小打小鬧的產品。對安卓系統架構進行優化、把應用程序代碼編譯打包為可立即執行的機器碼,打破安卓系統“邊解釋邊執行”的低效率,無疑是一個巨大的突破。


很多用戶購買蘋果手機的一個最重要的因素,就是iOS系統流暢性。而如今如果能夠解決安卓系統流暢性問題,那麼如此高價格的蘋果就沒有什麼優勢可言,用戶轉向到更低價格更有性能的安卓機,會是一個很自然的過程。不過經過方舟編譯器處理的系統,如果長時間使用是否變得臃腫和緩慢,目前還未可知。

不管怎麼樣華為至少已經打破了安卓這麼久以來流暢性沒有突破性進展的狀況,也許華為方舟編譯器只是一個開始。目前測試的結構通過方舟編譯器編譯後,系統流暢度提升24%、系統響應速度提升44%、三方應用操作流暢度提升60%,這是相當大的提升。

華為後續定會對安卓系統進行持續的優化,也會對方舟編譯器進行持續性的優化,相信它們都會變得越來越快越來越流暢。圍繞華為手機的應用越來越多,其生態也許很快構建起來,到華為自研系統啟用時,生態建設就會更加順暢與快捷。


更多分享請關注【東方高揚】。


東風高揚


不吹牛就不叫大嘴了,不過實事求是的講:方舟編譯器是目前為止華為(手機部門)最拿得出手的東西,這畢竟是底層技術,眾所周知越往底層,技術難度越高,國內廠商能拿出手的底層技術幾乎為零,全都活躍在應用層搶飯吃,所以說某種意義上這次拿出的方舟編譯器其技術含量超過海思芯片設計,更遠超50倍變焦,必須給個贊!


yihainan_new


那是不可能的,蘋果IOS是安桌不可超越的,不管你華為如何優化都是安桌!980如何有A12

優秀!

老餘吹牛逼了


分享到:


相關文章: