久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx

解讀開源的方舟編譯器,創新的RC與多層的IR

2021-02-02    分類: 網站建設

編譯器是很基礎的軟件,不過已經很多年沒有冒出新的編譯器了,技術也很成熟了,華為為什么要搞一個方舟編譯器呢?當然是為了編譯程序使之更好的運行了。多數人都知道JAVA是一個跨平臺的編程語言,為什么JAVA可以跨平臺呢?這就是JAVA虛擬機(JVM)的功勞,JAVA語言其實是通過JVM來運行的,JVM與各個平臺之間做了適配,其實跨平臺的是JVM,Android的ART虛擬機是一個特別的JVM。在計算機領域沒有什么問題是不能通過增加一個間接的中間層來解決的,JVM就是這樣的中間層。很多人會問Android 的APP需要跨平臺運行嗎?現在來看不需要,那Google為什么選JAVA作為開發語言呢?可能有很多因素的考量,但是誰也沒有想到SUN居然被著名的專利流氓ORACLE收購了,即便Google把JVM改寫了好幾遍也依然沒躲過這個專利官司,真正的大公司還是要有自己能完全控制的編程語言呀,華為會走出這一步嗎?有點跑題了,虛擬機是JAVA的精髓所在,虛擬機帶來的好處是以性能為代價的,那么那些必須考考慮效率的庫和應用怎么辦呢?用JNI技術調用C/C++庫,又是一筆不必要的開銷,還是影響效率。JAVA作為Android的開發語言已經成為事實,即便不需要跨平臺依然要忍受虛擬機帶來的低效問題。如何解決呢?干掉虛擬機最好了,反正現在也不需要跨平臺,這也是方舟編譯器的主要目的之一,當然,也并不是說方舟不能支持跨平臺,從公布的材料中看,還是有跨平臺方面的考慮只是不是JAVA虛擬機這種形式了。
解讀開源的方舟編譯器,創新的RC與多層的IR
既來之則安之,既然只能用JAVA就想法優化他,優化JAVA的運行效率關鍵還是在于虛擬機。Android 在5.0之后將Dalvik虛擬機替換為ART虛擬機,這也是Android Run Time,在幾經更改之后現在Android采用的是 解釋執行+ JIT + AOT 的混合編譯策略。
解讀開源的方舟編譯器,創新的RC與多層的IR
一般的靜態編程語言(編譯時確定類型,C/C++、JAVA都是)用編譯器編譯成二進制代碼并不難,但是JAVA還存在一些動態特性,比如反射,通常被稱為JAVA語言的高級特性,使用也很廣泛,尤其是框架。反射這樣的特性對程序員很友好,但是對編譯器是個災難,與runtime密切相關,方舟編譯器如何解決這個問題還沒有具體的Codes公布,不過在Readme中有一句可以留意:更輕量的語言運行時,這很可能與反射有關。編譯器本身是一個翻譯的過程,現代編譯器的結構基本就如下圖LLVM的結構差不多,分為前后端,方舟編譯器也是如此,目前主要開源的就是里面的IR部分。還是那句話,在計算機領域沒有什么問題是不能通過增加一個間接的中間層來解決的,IR也是一個中間層,連接編譯器的前端和后端。更形象的說,IR可以理解為JAVA的字節碼,后端可以理解為JAVA虛擬機。
解讀開源的方舟編譯器,創新的RC與多層的IR
在之前公布的信息中表示方舟編譯器支持跨語言編譯(尚未開源),跨語言編譯的原理就是將多種語言翻譯成同一種IR表示語言,然后兩部分合并優化。方舟編譯器的IR分多層,其中編程語言相關的優化使用高層表示(high level ir)
通用優化使用中層表示(mid level ir),編譯時就是一個持續降低層次的過程。在high level 中我們還能看到 if、while這樣的操作碼,與高級語言很像。用個例子看,C語言如下:
int fact(int n) {
if (n != 1)
return foo(n-1);
else return 1;
翻譯成MIR如下所示:
可以看出來很像,MIR中的語言像極了高級語言,只是有一些冗余,對于編譯器來說準確是第一位的,需要適當的冗余。根據方舟編譯器的文檔說明,當所有語言都翻譯成MIR后,都有自己的Opcodes,更加接近原語言,但是在逐級降低優化的時就越來越接近處理器的原生指令。
方舟編譯器目前開源的代碼還有一部分是關于GC(Garbage Collection)的,GC是對內存的管理,在程序運行中內存是一種寶貴的資源,當這塊內存的外部引用不存在時需要釋放內存,有些語言比如C/C++不提供內存回收機制,需要程序員手動的new/delete、malloc/free,一不小心就會造成內存泄漏,而JAVA的GC機制就很好的解決了這個問題。
自動內存管理通常有兩種垃圾回收策略:一種是引用追蹤垃圾回收(Tracing Garbage Collection,Tracing GC),另一種是基于引用計數(Reference Counting,RC)垃圾回收。JAVA上的垃圾回收采用的是GC方式,這個追蹤過程回依賴整個系統中多線程的間歇同步和停頓,可能會造成卡頓。方舟編譯器是在JAVA上嘗試RC,RC的方式是在函數返回時或異常退出時進行標記,這些操作會帶來額外的開銷,華為是想通過編譯器優化將RC開銷降低。
RC并不是一種落后的內存回收機制,廣受好評的蘋果swift就采用的RC回收機制,在用戶體驗非常重要的客戶端RC其實很適合,但是JAVA實現RC并不是很好弄,他還有龐大的舊JAVA庫。方舟編譯器引入RC機制的目的為了解決GC造成的卡頓問題, RC的機制大的問題在于可能產生循環引用,方舟編譯器的應對方法是:
1、程序員標記(目前還沒有開放給第三方);
2、引入一個環模式匹配的算法,在Runtime里會收集環在程序過程中的信息記錄到手機上,然后給三方應有使用,這是一個學習的過程,學習完下次運行時就會快速知道如何避免這些環;
3、GC兜底確保環能正確的解掉。
確切的說方舟編譯器并沒有拋棄GC,而是采用了RC為主GC兜底的方式。當內存閾值,或者程序員調動System.GC的時候使用GC來回收內存,根據華為在首場開源技術沙龍上的說法觸發GC的幾率大概為5%,這樣確實可以大大提高流暢性,目的基本達到了。
目前方舟編譯器開源的代碼還很少,不好分析,也給出一個演示示例,這個演示示例可以做的更好一些。
解讀開源的方舟編譯器,創新的RC與多層的IR
采用RC的方式,還會有一個循環引用的問題,目前方舟編譯器開源的代碼還很少,不知這個循環引用如何解決,對于已存在庫的標記要如何添加呢?說到標記我想到了一個人工智能訓練的數據標注,從理論上來說引用的標記和解除循環也是可以自動學習的,如果說能做到自動學習,那將是編譯器這些年來大的進步。所以我對下一步的開源很有興趣,想知道是如何做的。
RC的自動學習解環是我之前沒想到的,不知道這個自動學習算法是否會開源,對于他是如何保證解環正確的還是充滿好奇。目前方舟編譯器開源的部分還是少,等待更多的開源,包括運行時。

文章名稱:解讀開源的方舟編譯器,創新的RC與多層的IR
新聞來源:http://www.js-pz168.com/news/98809.html

成都網站建設公司_創新互聯,為您提供外貿網站建設自適應網站虛擬主機企業網站制作網站建設微信公眾號

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

商城網站建設
久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx
成人一区二区在线| 欧美日本一区二区| 欧美大片拔萝卜| 国产精品灌醉下药二区| 视频一区二区三区中文字幕| 丁香亚洲综合激情啪啪综合| 黄色99视频| 欧美三级中文字幕| 国产欧美精品一区二区三区四区 | 一本到一区二区三区| 日韩一区二区三区四区五区六区| 国产精品久久久久国产精品日日| 午夜精品一区在线观看| caoporn国产精品| 天天综合色天天综合色hd| 欧美一区二区视频在线观看2020| 中文字幕国产精品一区二区| 蜜臀av在线播放一区二区三区| 91影视在线播放| 色婷婷亚洲一区二区三区| 久久久久九九视频| 日韩国产欧美一区二区三区| aaa国产一区| 最新精品视频| 国产三级久久久| 蜜桃久久久久久| 国产精品国产三级国产专区53 | 久久国产精品99精品国产| 成人av资源| 欧美日韩午夜精品| 亚洲乱码日产精品bd| 国产精品一区二区你懂的| 久久综合九色99| 日韩美女一区二区三区| 五月天丁香久久| 国产成人一区二区三区免费看| 在线观看一区二区视频| 国产精品国产馆在线真实露脸| 国内精品嫩模私拍在线| 日本一区二区精品| 久久久久久黄色| 久久99精品国产.久久久久久 | 中文字幕一区av| 国产成人一区在线| 亚洲午夜高清视频| 国产精品三级视频| 狠狠v欧美v日韩v亚洲ⅴ| 欧美少妇一区| 久久亚洲私人国产精品va媚药| 日韩不卡一二三区| 久久免费看av| 精品成人在线观看| 久久精品国产色蜜蜜麻豆| 欧美一区二区三区四区夜夜大片 | 欧美日韩国产不卡| 亚洲动漫第一页| 国产女主播一区二区| 日韩一区国产二区欧美三区| 日精品一区二区| 农村寡妇一区二区三区| 国产亚洲一区二区三区四区| 国产一区啦啦啦在线观看| 一区二区三区国产福利| 1024精品合集| 91久久爱成人| 日韩欧美一级二级| 国内一区二区在线| 一区二区三区我不卡| 亚洲欧美区自拍先锋| 99久久综合狠狠综合久久止| 日韩精品一区二区三区四区视频| 美女视频网站黄色亚洲| 亚洲国产精品一区在线观看不卡| 中文字幕巨乱亚洲| 99精品欧美一区二区蜜桃免费| 欧美久久久久免费| 蜜臀av性久久久久蜜臀aⅴ四虎| 日韩精品欧美在线| 亚洲视频狠狠干| 国产精品10p综合二区| 26uuu欧美日本| 国产91精品在线观看| 欧美日本一道本在线视频| 日本不卡一二三区黄网| 日韩一区二区电影在线观看| 亚洲手机成人高清视频| 国产精品一区二区三区不卡 | 欧美天堂一区二区三区| 日韩精品福利网| 五月天婷亚洲天综合网鲁鲁鲁| 亚洲视频精选在线| 狠狠色噜噜狠狠色综合久| 欧美国产日韩在线观看| 99理论电影网| 国产日韩成人精品| 91麻豆自制传媒国产之光| 精品美女在线观看| 成人动漫一区二区| 欧美哺乳videos| 国产99久久久久久免费看农村| 制服丝袜在线91| 国产精一品亚洲二区在线视频| 欧美色综合影院| 国内欧美视频一区二区| 欧美日韩视频一区二区| 国内一区二区视频| 91精品国产全国免费观看| 国产精品一级黄| 91麻豆精品91久久久久同性| 国产精品自拍网站| 日韩欧美国产综合| 99精品视频在线播放观看| 久久久久久久av麻豆果冻| 99精彩视频在线观看免费| 欧美经典一区二区| 久久99欧美| 亚洲影视在线观看| 一本色道婷婷久久欧美 | 中文字幕一区综合| 免费观看91视频大全| 欧美三级电影在线观看| 国产一区二区三区视频在线播放| 欧美精品vⅰdeose4hd| 丰满放荡岳乱妇91ww| 久久免费看少妇高潮| 粉嫩精品一区二区三区在线观看| 国产精品美女一区二区| 欧美日韩亚洲一区二区三区四区| 亚洲国产美女搞黄色| 日本韩国视频一区二区| 国产一区二区中文字幕| 日韩免费一区二区三区在线播放| 99国产欧美久久久精品| 中文字幕第一区| 日本不卡一区二区三区在线观看| 香蕉久久夜色精品国产使用方法| 色婷婷av一区| 国产精品中文字幕一区二区三区| 日韩免费成人网| 国产99视频精品免费视频36| 亚洲乱码国产乱码精品精可以看| 亚洲一区综合| 国产一区二区三区蝌蚪| 精品国产精品网麻豆系列| 国产精品一区二区av| 亚洲国产精品视频| 欧美日韩精品一区二区在线播放| 成人动漫一区二区| 亚洲欧美综合在线精品| 午夜欧美一区二区三区免费观看| 久久国产麻豆精品| 久久亚洲一级片| 欧美中日韩免费视频| 欧美aaaaaa午夜精品| 日韩欧美电影一区| 精品国产一区二区三区四区vr| 亚洲尤物在线视频观看| 欧美日韩亚洲丝袜制服| 91美女在线观看| 亚洲自拍偷拍网站| 9191久久久久久久久久久| 97se在线视频| 亚洲123区在线观看| 欧美一区二区三区喷汁尤物| 国产亚洲精品美女久久久m| 五月天中文字幕一区二区| 日韩一卡二卡三卡| 久久精品99| 狠狠狠色丁香婷婷综合激情| 国产日韩v精品一区二区| 亚洲高清123| 成人综合在线网站| 亚洲男同性恋视频| 欧美日韩国产成人在线91| 国产精品美女诱惑| 美女爽到高潮91| 国产日韩欧美综合在线| 中国人体摄影一区二区三区| 北岛玲一区二区三区四区| 亚洲激情自拍偷拍| 欧美一区二区日韩| 欧美激情第六页| 国产精品白丝jk黑袜喷水| 成人免费一区二区三区视频| 欧美体内she精视频| 国产精品一区二区免费| 另类小说综合欧美亚洲| 欧美激情一区二区三区| 在线观看三级视频欧美| 成人激情av| 精品一区二区三区久久| 中文字幕一区二区三区蜜月 | 色综合久久av| 成人黄色a**站在线观看| 亚洲国产美女搞黄色| 久久欧美一区二区| 91黄色在线观看| 国产在线播放一区二区| 国产麻豆欧美日韩一区| 亚洲资源在线观看|