Re: [新聞] 解讀| 華為方舟編譯器是如何實現Android
: 華為方舟編譯器究竟改變了什麼?
: 首先,方舟編譯器是配合華為EMUI 9.1 操作系統而打造的一個編譯工具。
: 按照華為方面的說法,雖然方舟編譯器是在2019 年4 月11 日發布,但是華為早在5 年前就開始佈局,2013 年推出了自研編譯器HCC,2014 年編程大神Fred Chow 加入,擔任華為編譯器技術首席科學家,2016 年華為成立編譯器與編程語言實驗室,投入了數百的專家團隊經歷了多次嘗試,才在EMUI 9.1 上實現了機器代碼的翻譯。
: 按照上述Android 操作系統的代碼運行邏輯,華為編譯器最大的優勢在於,它繞過了VM。
重點一
: 簡單來說,在百人專家團隊的打造下,華為方舟編譯器可以將高級語言(Java)直接變成機器碼,無需再通過Android 操作系統中內置的VM 編譯器。按照華為方面的說法:方舟編譯器編譯的應用在開發階段就已完成;也就是說,只要是經過編譯器編譯的應用,在應用市場上上架了以後,用戶下載APK 的就是編譯過的了。
: 換句話說,通過方舟編譯器,開發者的應用在下載之前就已經轉化成為機器可以識別的代碼,因而可以在手機上快速安裝、啟動和運行,而無需在經過VM 的編譯——某種程度上,方舟編譯器是將編譯過程提前到應用開發階段,從而大幅度減少了智能手機和操作系統的運行負擔。
: 按照華為方面的說法,採用華為編譯器之後,提升效果如下:
: EMUI 9.1 僅僅對系統組件System Server 應用了方舟編譯器之後,系統流暢速度提升了24%,系統響應速度提升了44%;
: 第三方應用(目前採用了新浪微博極速版)的操作流暢度提升了60%。
: 不可忽視的是,實際上,要想實現華為所言的效果,就首先需要第三方的應用開發者採用方舟編譯器對自家的App 提前進行改造,從而能夠上架華為應用商店——這也是余承東在4 月11 日的發布會呼籲開發者積極參與的原因。
: 除了代碼編譯,方舟編譯器也提供了更高效的內存機制,它與Android 內存回收的不同之處在於:
: 內存管理是程序開發與運行時需要重點考慮的部分,也和系統流暢度息息相關。Android 在內存回收上採用集中回收機制,發聲全局回收時更需要暫停應用,這也是隨機卡頓的根因之一。而方舟編譯器提供了更高效的內存回收機制,回收時無需暫停應用,隨時用隨時回收,大大提高運行速度。
重點二
: 另外,在方舟編譯器的編譯環境下, 還可以對代碼進行優化。目前,由於Android ART 的AoT 和JIT 動態編譯因為是運行在手機上,受資源所限,因而只能使用簡單的優化算法。而方舟編譯器由於是在應用開發階段進行編譯,所以可以允許不同應用靈活採用不同的編譯優化方案,而且因為在開發環境編譯不會受到手機性能的限制,可以使用更多先進的優化算法,從而使得每個應用的性能達到最佳。
: 2019,全面開源
: 其實,在4 月11 日的發布會上,華為方面已經表示,方舟編譯器也將開放給第三方合作夥伴,希望共同構建開發者生態的“方舟朋友圈”。
: 目前,華為已經宣布方舟編譯器會從2019 年全面開源;其中,華為將在2019 年8 月的華為終端開發者大會宣布方舟編譯框架代碼開源,後續會在2019 年11 月的綠盟開發者大會實現完整方舟編譯器代碼開源。
: 對於華為方舟編譯器的開源,雷鋒網將保持關注。
: 雷鋒網(公眾號:雷鋒網)注:本文部分內容編自知乎平台作者weishu的回答內容,已經獲得作者授權。
: https://m.leiphone.com/news/201904/oshefuZTLnU00mJO.html
: 心得:好吧,其實我整天都看不懂,只知道好像很厲害
: 有厲害的人可以解釋個嗎感謝
: 這樣子卓卓是不是在效能上要成功反超果果了呢!
: 太令人期待啦!
這系列文章不知道能不能釣到 jserv
反正我先起個頭
就目前的的公開資訊吧
方舟編譯器這個名字代表了他的巨大工作量
我猜的啦 底層就是重做一套語言再加上相容 Java
而且只有華為自己的OS才能發揮功能
除非Google把整套解決方案放到Android裡面
不然要形成 iOS 的生態系還是難啦
就大陸幾個大型app會投資源下去玩而已
不過看方舟編譯器的效果確實明顯降低了 Android 的 jit 的時間
不過有人還沒習慣 Android 就是會這樣頓一下嗎
哈哈哈
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 91.121.50.14
※ 文章網址: https://www.ptt.cc/bbs/MobileComm/M.1556260646.A.75E.html
→
04/26 14:50,
6年前
, 1F
04/26 14:50, 1F
→
04/26 14:50,
6年前
, 2F
04/26 14:50, 2F
→
04/26 14:50,
6年前
, 3F
04/26 14:50, 3F
→
04/26 14:51,
6年前
, 4F
04/26 14:51, 4F
→
04/26 14:51,
6年前
, 5F
04/26 14:51, 5F
→
04/26 14:53,
6年前
, 6F
04/26 14:53, 6F
→
04/26 14:53,
6年前
, 7F
04/26 14:53, 7F
推
04/26 20:21,
6年前
, 8F
04/26 20:21, 8F
→
04/26 21:41,
6年前
, 9F
04/26 21:41, 9F
→
04/26 21:42,
6年前
, 10F
04/26 21:42, 10F
→
04/26 21:43,
6年前
, 11F
04/26 21:43, 11F
→
04/27 03:31,
6年前
, 12F
04/27 03:31, 12F
→
04/27 03:31,
6年前
, 13F
04/27 03:31, 13F
→
04/27 03:31,
6年前
, 14F
04/27 03:31, 14F
→
04/27 03:31,
6年前
, 15F
04/27 03:31, 15F
→
04/27 03:31,
6年前
, 16F
04/27 03:31, 16F
→
04/27 03:31,
6年前
, 17F
04/27 03:31, 17F
→
04/27 03:31,
6年前
, 18F
04/27 03:31, 18F
→
04/27 03:32,
6年前
, 19F
04/27 03:32, 19F
→
04/27 03:32,
6年前
, 20F
04/27 03:32, 20F
→
04/27 03:33,
6年前
, 21F
04/27 03:33, 21F
→
04/27 03:33,
6年前
, 22F
04/27 03:33, 22F
→
04/27 03:34,
6年前
, 23F
04/27 03:34, 23F
→
04/27 03:39,
6年前
, 24F
04/27 03:39, 24F
→
04/27 03:39,
6年前
, 25F
04/27 03:39, 25F
→
04/27 03:39,
6年前
, 26F
04/27 03:39, 26F
→
04/27 03:39,
6年前
, 27F
04/27 03:39, 27F
推
04/27 03:46,
6年前
, 28F
04/27 03:46, 28F
→
04/27 03:46,
6年前
, 29F
04/27 03:46, 29F
→
04/27 03:46,
6年前
, 30F
04/27 03:46, 30F
→
04/27 04:00,
6年前
, 31F
04/27 04:00, 31F
→
04/27 04:00,
6年前
, 32F
04/27 04:00, 32F
→
04/27 04:00,
6年前
, 33F
04/27 04:00, 33F
→
04/27 04:00,
6年前
, 34F
04/27 04:00, 34F
→
04/27 04:02,
6年前
, 35F
04/27 04:02, 35F
→
04/27 04:02,
6年前
, 36F
04/27 04:02, 36F
推
04/27 13:54,
6年前
, 37F
04/27 13:54, 37F
→
04/28 10:13,
6年前
, 38F
04/28 10:13, 38F
→
04/28 10:14,
6年前
, 39F
04/28 10:14, 39F
推
05/17 00:31,
6年前
, 40F
05/17 00:31, 40F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):