深入解讀方舟編譯器,華為工程師9個問答告訴你

2019-08-25   花粉俱樂部

非常高興能有機會去探索華為西安研究所,更與研發麵對面交流了解了華為方舟編譯器的深層信息,而且也進入到了首次開放的IOT實驗室,體驗了榮耀9X的智慧通信2.0,此功能除了可以智能識別主副卡信號強度,使手機一直處在信號滿格狀態外,還可以做到主卡打電話,副卡也能接收來電,同時還能流暢的上網,簡直不要太酷炫!

不過我個人最感興趣的就是華為方舟編譯器了,當天研發大佬也解答了我們好多個問題,下面我把自己感興趣的給大家摘錄一下:

1.用戶具體在哪些應用或操作當中能夠體驗到華為方舟編譯器的好處?

答:相信大家都已經看了周末的那個開發者大會,我們在大會上已經明確了,除了這個微博極速版之外,我們還跟40多家應用夥伴進行了合作,包括我們平常用的這個淘寶、QQ、支付寶、頭條等等,也在未來的一兩個月之內會陸續上線。而且我們常用的一些APP都會進行編譯更新,後續也會跟進!

2.方舟編譯器的開發都經歷了哪些過程?中間有沒有遇到困難?

答:其實這個是一個比較長的歷程,如果回顧一下這個過程的話,其實從09年的時候,我們華為,在做這個5G的基礎研究的時候,因此成立了這樣的一個編譯的技術組,在2013年的時候,我們推出了一個針對基站的這樣的一個自研的編譯器,也在這個時候,我們基本明確了,這個編譯器的基礎技術框架,在2016年的時候,華為成立了針對編譯器以及編譯語言的基礎實驗室,直到2019年,我們經過了這麼多年的優化,才推出了,手機上面的這個方舟編譯器。

3.榮耀9X啟動方舟編譯器是什麼時候開始的?

答:其實大家應該知道,我們第一次接觸方舟編譯器是在華為P30的發布會上,也就是今年三月份的時候,當時我們是完成了針對這個麒麟980晶片方舟編譯器的適配,但其實在這個之前我們就已經投入到了現在榮耀9X上面用到的麒麟810晶片的適配。前後大概經歷了半年多的時間,我們也達到了810晶片上這個方舟編譯器商用的水平。

4.方舟編譯器如何提升系統的流暢性?

答:其實大家應該看到過關於這類的一些科普的帖子或文章,在我這邊看來,核心內容主要有兩個點:

第一點,大家都知道這個安卓本身有一個核心的命門,就是一個java虛擬機,整個安卓應用的上傳是用這個java的構件,但它又不可避免的要做到的一個事情就是要把java的這個自解碼變成可以直接在機器上運行的機器碼,這就導致了它在運行的過程中,要去完成這樣一個轉換。那我們方舟編譯器的出現,它就直接可以把我們這個java,包括C、C++這樣混合編程直接變成我們的機器碼,他就大大提升了代碼運行的這樣一個效率。

第二點,也是安卓的一個核心機制:內存回收。安卓的內存回收它是這樣的一個機制,當整個系統運行到內存不足的時候,會觸發內存回收。就是我們所說的「GC」,在「JC」的時候,這個系統是不能做其他任何事情的,只能等待或者系統把這個內存回收這個工作完成以後,才能做其他的事情。我們方舟編譯器採用了更加先進的「RC」機制,我們會對每一塊內存進行精細化管理,監控每一塊內存的使用情況,當這個內存不再被使用的時候,隨時回收。保證我們這個系統的內存,隨時都處於一種高效運行的狀態。

上面說的這個比較複雜,我來解讀一下:第一個就相當於是說我和一個外星人在交流,外星人,他要有一個翻譯器,把他的話語翻譯成我們人類能聽懂的語言,方舟編譯器達到的效果就是我們直接和一個人類來對話,少了中間翻譯的過程。

第二個就相當於,安卓一下子就把內存全部都回收回來,在這個過程中就會導致有一些卡頓,方舟編譯器就是,精確的來分析一下哪一個不用的時候就把它回收一下內存內存釋放,其他的不管。相當於方舟編譯器是隨收隨用,可以理解為「一次性模式」。

5.方舟編譯器經歷了十年的過程,在過程當中有沒有經歷幾個階段?在其他方面還有什麼應用?

答:從技術發展整個的維度上來看,在十年歷程中,我們方舟編譯器應該是有三個階段。

第一個階段,主要是對方舟編譯器整個框架的確立和構建;

第二個階段,我們更多的是做了對這個動態語言語義的這樣一個建模,這個階段主要是面向一些物聯網;

第三個階段,是我們整個對這個手機行業,特別是對安卓這樣一個體系優化的探索。

到現在我們推出了這樣的一個方舟編譯器,更多的給大家介紹的,還是在手機應用方面上的一些優化,但方舟編譯器的優化,卻不僅僅於此,其他的我們會在後面合適的時機表達出來。

6.與微軟、谷歌、蘋果這些行業大佬相比,我們方舟編譯器處於什麼位置?

答:這些都是業界的一些巨頭,他們在編譯器方面的積累會比我們要長很多時間,我們作為一個後來者,其實更多的是吸收了他們的一些經驗,比如他們這麼多年積累的一些知識和優勢,當然我們也在上面做了很多的創新,包括我們前面介紹的這個靜態編譯,以及內存回收的機制,我們還有很長的路要走,當然我們相信我們會越做越好!

我的理解,出發的晚,用的技術會更新,架構也會更新,不管是我們現在的方舟編譯器,還是未來的鴻蒙系統都會是更新的技術。其實方舟編譯器這樣的里程技術,技術積累都是需要時間的,我們現在的時間可能還比較有限,但是我們相信後面我們會主動的和世界上最先進的技術做到同樣一個狀態!

7.方舟編譯器這麼好,有沒有向其他廠商推廣的這樣一個計劃?

答:我們在這個周末的開發者大會上,已經做了一個方舟編譯器整個開源的計劃,我們可以看到,總共分為兩個階段。

第一個階段,在今年的八九月份,會把方舟編譯器的整個框架開源出來。

第二個階段,到2020年,就是隨著我們方舟編譯器的這樣一個優化、完善,我們會把整體的代碼開放給業界。

我們也歡迎更多的廠商和夥伴加入到我們方舟的這個家庭里來。

8.方舟編譯器的軟體是要做一個專門的優化的,那方舟編譯器編譯過的軟體會單獨做一個應用商店嗎?

答:現在方舟編譯器這個應用都是針對安卓上的應用的一個優化,後續已經優化的安卓應用(就是現在已經公布的40多個以及後續更多的幾乎所有廠家)都會以一種正常應用包的形式放在華為應用市場上(有專屬標誌),用戶到時候會很方便的,在華為應用市場上找到經過方舟編譯器編譯過的軟體。

9.其他的廠商如果想要支持方舟編譯器,那他們應該怎麼做?難不難?

答:我們在整個開源的過程中,包括我們明年去做整個方舟編譯器的開源的時候,我們會把整個方舟編譯器的工具鏈和環境都做好,在這樣的一個工具鏈下面,其他的合作廠商和夥伴想加入,想把整個方舟編譯器納入到自己的這個軟體體系裡邊,是一個非常便捷的過程,我們歡迎更多的合作夥伴,大家來加入進來,我們共同優化和探索編譯器的技術。

大家有沒有感到對方舟編譯器有了更深層次的理解呢?我是覺得這項技術簡直不要太酷炫,而且像榮耀9X這樣的千元機也可以擁有,非常給力。總之這次西研所的方舟速度之旅不虛此行,被華為的硬核實力震驚!