• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      安卓性能革命?華為方舟編譯器解密

      2019-10-30 03:42:57技術宅
      電腦愛好者 2019年11期
      關鍵詞:編譯器方舟安卓

      技術宅

      手機底層和高級程序間的“翻譯官”

      對于手機的底層系統(tǒng)和CPU來說,它們只“認識”0和1這樣的機器碼,而在安卓上運行的APP大多是由Java開發(fā)的,這種高級程序語言必須轉換成機器碼,才能夠被底層系統(tǒng)所識別(圖1)。

      從高級語言的源代碼到系統(tǒng)底層目標碼的轉換,是由編譯器來完成的,它的角色比較接近現(xiàn)實中的翻譯,因為我們人腦(類似安卓手機的CPU)不懂外語,想要和外國人交流的話就需要借助翻譯(即編譯器),將外語轉換為我們可以理解的母語。好的翻譯可以影響雙方交流的流暢度,而一個好的編譯器同樣直接影響著手機系統(tǒng)和軟件的運行效率。

      方舟編譯器為安卓加速

      此次華為開發(fā)的方舟編譯器是怎樣提高手機系統(tǒng)效率的呢?

      開發(fā)安卓應用目前用得最多的是Java,它所創(chuàng)建的源文件經過編譯生成Class.dex文件,最后被打包成DEX字節(jié)碼文件,再由安卓系統(tǒng)中的Dalvik、Art(編譯器)負責將DEX字節(jié)碼翻譯成機器碼,手機CPU識別出機器碼中的操作命令后即可實際執(zhí)行了。有興趣的朋友可以用72ip解開安卓應用的APK安裝文件,就會發(fā)現(xiàn)其中包含有Class.dex文件(圖2)。

      每次安卓應用運行時,Dalvik動態(tài)地將一部分Dalvik字節(jié)碼解釋為機器碼。隨著應用的運行,更多的字節(jié)碼被編譯和緩存,這就是典型的“邊解釋邊執(zhí)行”的安卓運行模式。雖然這種模式具有更小的內存占用和更少的設備物理空間占用優(yōu)勢,但是也導致安卓系統(tǒng)的運行效率更為低下。這也是為什么很多安卓機型在硬件配置上可以甩掉iPhone幾條街,但是系統(tǒng)流暢度仍然不如iOS的根本原因(圖3)。

      另外一方面,由于Java的跨平臺特性是靠字節(jié)碼實現(xiàn)的,這就導致應用運行時,必須先將高級語言轉換成字節(jié)碼,再將字節(jié)碼轉換成機器需要的語言,而且還得需要虛擬機環(huán)境才能運行,過多的中間環(huán)節(jié)使得運行效率進一步受到影響。

      針對這一問題,方舟編譯器—方面從機器碼的編譯效率入手,它不像傳統(tǒng)的安卓編譯器那樣“邊解釋邊執(zhí)行”,而是將動態(tài)編譯改進為靜態(tài)編譯,這樣可以做到全程執(zhí)行機器碼高效運行程序,大大縮短了程序響應時間。這有些像我們在優(yōu)酷上看電視連續(xù)劇,傳統(tǒng)的安卓是一集集按部就班地播放,方舟編譯器則類似使用了快進的方式快速預覽全集,這樣看連續(xù)劇花的時間更少,但是該有的劇情一個都不會少(圖4)。

      另—方面,方舟編譯器摒棄了虛擬機運行環(huán)境的依賴?,F(xiàn)在安卓上的應用95%都涉及到多種語言的開發(fā),如C、C++、Java等,不同的語言代碼保持獨立,在運行環(huán)境中進行協(xié)同,因此會產生系統(tǒng)性能的部分損耗。比如大部分依靠Java開發(fā)的應用需要虛擬機環(huán)境才能運行,這無形中增加了性能的損耗,方舟編譯器則可以做到將不同語言的代碼放到同一套編譯好的執(zhí)行文件中,省去虛擬機額外的損耗,從而提高效率(圖5)。

      通過上述兩方面的優(yōu)化,部署方舟編譯器的手機可以有明顯的速度提升。根據(jù)華為發(fā)布會公布的測試結果(內部測試):EMUI 9_, 1中僅僅對系統(tǒng)組件System Server使用方舟編譯器進行優(yōu)化,就可以帶來24%的系統(tǒng)流暢度提升,系統(tǒng)響應性能提高44%。目前第三方APP適配后(微博極速版)操作流暢度可以提升60%?,F(xiàn)在配備的方舟編譯器的P30 Pro已經上市,從網友實際使用體驗看,系統(tǒng)運行速度和同等配置機型相比也有明顯的提升(圖6)。但是否真能與官方宣傳數(shù)據(jù)相符,還需要靜待第三方權威機構的測試結果。

      安卓性能提升任重道遠

      華為計劃在2019年1 1月的綠盟開發(fā)者大會上將完整的方舟編譯器代碼開源。如果開發(fā)者都可以使用統(tǒng)一的方舟編譯器,那么安卓底層編譯開發(fā)就可以實現(xiàn)統(tǒng)一化,大大降低碎片化的問題,改善其性能劣勢。

      不過方舟編譯器畢竟是針對系統(tǒng)底層的優(yōu)化,需要海量第三方應用的開發(fā)和適配,這是一件非?;ㄙM時間的事情。而且不是先進的編譯技術就一定能“一統(tǒng)江湖”,安卓應用的生態(tài)現(xiàn)極為混亂不堪,各廠商對系統(tǒng)優(yōu)化的理解也均不相同,在大家沒有形成統(tǒng)一意見時,利益競爭往往會擺在第一優(yōu)先級?!胺街邸笔俏磥淼闹髁鬟€是華為的自娛自樂,這些都有待時間來驗證。

      猜你喜歡
      編譯器方舟安卓
      隱秘的方舟
      《方舟》
      基于相異編譯器的安全計算機平臺交叉編譯環(huán)境設計
      文物表情包
      Recent Promotion and Commercialization of Kun Opera
      商情(2017年44期)2017-12-27 02:44:16
      一種基于安卓系統(tǒng)的手機側抓包分析方法
      安卓L未至安卓M來了!安卓首泄漏M系統(tǒng)
      通用NC代碼編譯器的設計與實現(xiàn)
      安卓開發(fā)者之煩惱
      編譯器無關性編碼在微控制器中的優(yōu)勢
      上犹县| 阿拉善盟| 三穗县| 边坝县| 彰武县| 东乌| 突泉县| 揭东县| 腾冲县| 汽车| 沭阳县| 天祝| 荣昌县| 江源县| 全椒县| 渑池县| 台前县| 龙山县| 芜湖市| 旬阳县| 云南省| 大足县| 台州市| 嫩江县| 赣榆县| 南投县| 怀仁县| 达日县| 尤溪县| 武鸣县| 蓬溪县| 灵武市| 华亭县| 格尔木市| 西畴县| 宜丰县| 安达市| 滨海县| 望奎县| 深州市| 大丰市|