91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

技術(shù)探討之請(qǐng)教方舟編譯器的十個(gè)問(wèn)題

Linux閱碼場(chǎng) ? 來(lái)源:Linuxer ? 2019-11-29 14:34 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

緣起

華為的方舟編譯器終于走出開(kāi)源的第一步,官方地址為https://www.openarkcompiler.cn/home 。我個(gè)人于今年4月在機(jī)械工業(yè)出版社出版了“深入理解Android”系列書(shū)籍的最后一本書(shū)——《深入理解Android Java虛擬機(jī)ART》一書(shū)。

這本書(shū)圍繞Android系統(tǒng)中Java虛擬機(jī)ART做了詳盡的源碼分析。其中,第六章更是以全書(shū)最多的篇幅從字節(jié)碼到機(jī)器碼的編譯過(guò)程進(jìn)行了詳細(xì)介紹。

寫(xiě)書(shū)時(shí),我一直耿耿于懷國(guó)內(nèi)在計(jì)算機(jī)基礎(chǔ)核心技術(shù)上缺乏領(lǐng)軍公司的投入之時(shí),沒(méi)想到今年華為先送出方舟編譯器,緊接其后是鴻蒙OS。未來(lái)不敢說(shuō)結(jié)局怎樣,但現(xiàn)時(shí)真切讓我和我周?chē)男』锇榭吹搅讼M?。就算激起無(wú)論是正面還是負(fù)面的全民大討論,我覺(jué)得相比無(wú)人問(wèn)津也算是大大的進(jìn)步。

言歸正傳,結(jié)合方舟的官網(wǎng),我其實(shí)有幾個(gè)技術(shù)問(wèn)題想請(qǐng)教。當(dāng)然,隨著方舟進(jìn)一步擴(kuò)大和深度開(kāi)源,這些問(wèn)題可能也就不言自明。到時(shí)候感興趣的讀者不妨以這里提到的問(wèn)題來(lái)看看方舟是如何巧妙解決它們的。

問(wèn)題一:

https://www.openarkcompiler.cn/document/FAQ Q2說(shuō)“當(dāng)前部分Java語(yǔ)言特性和JVM虛擬機(jī)特性的支持未包括在本次開(kāi)源代碼中,包括:annotation、lambda表達(dá)式、泛型等”。想了解下,這部分功能是否已經(jīng)在方舟編譯器上實(shí)現(xiàn)但目前還未開(kāi)源出來(lái)?還是什么別的情況?出于什么考慮,lambda表達(dá)式和泛型未能在此時(shí)開(kāi)源?

問(wèn)題二:

編譯器領(lǐng)域現(xiàn)在業(yè)界都使用三段式編譯器。架構(gòu)如下:

編譯器框架LLVM和核心就是LLVM IR,而方舟編譯器也有一個(gè)Maple IR。請(qǐng)問(wèn)相比LLVM IR,Maple IR的優(yōu)勢(shì)在哪里?它的愿景是什么?


問(wèn)題三:

經(jīng)過(guò)方舟編譯器處理后的應(yīng)用,從公開(kāi)渠道上的信息上看,在流暢度等幾個(gè)方面有大幅提升。能否詳細(xì)介紹下流暢度是怎么衡量的?也就是說(shuō),方舟內(nèi)部是如何評(píng)價(jià)經(jīng)過(guò)方舟編譯器處理后以及沒(méi)有經(jīng)過(guò)方舟編譯器處理后的應(yīng)用的性能?都選了哪些測(cè)試點(diǎn)?

問(wèn)題四:

適配了方舟編譯器的有幾十個(gè)APP,但還有很多APP開(kāi)發(fā)者沒(méi)有機(jī)會(huì)第一時(shí)間接觸方舟(包括我自己)。想了解下使用方舟編譯器是否有副作用?比如,如果將字節(jié)碼全部轉(zhuǎn)成了機(jī)器碼,這會(huì)占據(jù)較大的存儲(chǔ)空間。請(qǐng)問(wèn)是否有類(lèi)似這樣的問(wèn)題,有什么好的解決辦法嗎?

問(wèn)題五:

方舟編譯器說(shuō)干掉了JVM虛擬機(jī)(原話可能不是如此,但我理解是這個(gè)意思),請(qǐng)問(wèn)經(jīng)過(guò)方舟編譯器處理的應(yīng)用是否能按以前的Java程序那樣調(diào)試?

備注:為什么會(huì)問(wèn)這個(gè)問(wèn)題?java程序debug時(shí)必須靠jvm幫忙,比如處理jdwp,更關(guān)鍵是要靠jvm來(lái)解釋執(zhí)行字節(jié)碼。不過(guò),我在ART那本書(shū)里并沒(méi)有詳細(xì)介紹這個(gè)過(guò)程,我不保證這個(gè)問(wèn)題問(wèn)正確了。也請(qǐng)懂行的朋友們指正。

問(wèn)題六:

方舟編譯器對(duì)java語(yǔ)言的特性支持如何?比如,ART虛擬機(jī)中,一個(gè)java方法即使以機(jī)器碼方式運(yùn)行,在某些時(shí)候也必須回退到解釋執(zhí)行。比如下面的ArrayIndexOutOfBounds異常的處理。

對(duì)于類(lèi)似這種問(wèn)題,方舟編譯器在技術(shù)層面上對(duì)于它們大概的解決思路是什么?

問(wèn)題七:

ART虛擬機(jī)在諸如synchronized等的實(shí)現(xiàn)上做了大量工作(ART一書(shū)的第十二章),包括優(yōu)化(比如一個(gè)線程如果已經(jīng)得到某個(gè)鎖的情況下,后續(xù)再去獲取這個(gè)鎖的話,實(shí)際上只是遞增了該鎖的引用計(jì)數(shù))。雖然PTHREAD相關(guān)同步處理也有類(lèi)似的優(yōu)化,但我想了解下方舟編譯器(如果干掉虛擬機(jī)的話),有沒(méi)有針對(duì)這方面的處理或者優(yōu)化?

問(wèn)題八:

引用計(jì)數(shù)是垃圾回收的一種經(jīng)典技術(shù)。方舟編譯器說(shuō)是用引用計(jì)數(shù)代替了其它幾種GC技術(shù),做到隨用隨收。但其中有一些需要特別注意的地方(ART一書(shū)的第十三章、十四章專(zhuān)門(mén)講解內(nèi)存分配和GC)。垃圾回收是和內(nèi)存分配息息相關(guān)的。ART虛擬機(jī)內(nèi)部對(duì)內(nèi)存分配有著良好的管理。比如rosalloc分配器,BumpPointerSpace、針對(duì)大內(nèi)存對(duì)象的LargeObjectSpace等。請(qǐng)問(wèn)方舟編譯器是怎么應(yīng)對(duì)的?是將java層的new直接對(duì)應(yīng)到比如native層的new/malloc(直接依賴os的內(nèi)存分配機(jī)制),還是也依賴一個(gè)小的,輕量級(jí)的runtime來(lái)協(xié)助這方面的工作?

另外,ART在內(nèi)存管理方面做了一些優(yōu)化,比如當(dāng)程序退到后臺(tái)后,會(huì)對(duì)內(nèi)存進(jìn)行碎片整理。如果方舟編譯器是隨用隨收的話,請(qǐng)問(wèn)長(zhǎng)時(shí)間運(yùn)行后,是否會(huì)存在內(nèi)存碎片?如果有,是如何處理的呢?

問(wèn)題九:

官網(wǎng)上提到了伴隨方舟編譯器有一個(gè)輕量級(jí)的運(yùn)行時(shí),這個(gè)運(yùn)行時(shí)主要工作是什么?它和ART JVM有何區(qū)別?方舟編譯器未來(lái)還要支持Javascript,這個(gè)運(yùn)行時(shí)是否也能支持JS?還是說(shuō)需要一個(gè)針對(duì)js的運(yùn)行時(shí)?最后,這個(gè)運(yùn)行時(shí)會(huì)開(kāi)源嗎?

問(wèn)題十:

我想方舟編譯器的背后是承載了華為甚至很多國(guó)人偉大夢(mèng)想的,但一時(shí)領(lǐng)先并不保證長(zhǎng)久領(lǐng)先。比如,媒體做了經(jīng)過(guò)方舟編譯器處理后APP和蘋(píng)果手機(jī)上APP打開(kāi)速度的對(duì)比測(cè)試。方舟編譯器的效果比較明顯。但ios13據(jù)蘋(píng)果官方數(shù)據(jù)上看,APP啟動(dòng)速度提升了兩倍。這說(shuō)明我們?cè)谂?,?duì)手也在努力。華為是一個(gè)有著很強(qiáng)憂患意識(shí)的偉大公司。那么,方舟編譯器針對(duì)ios13是否有優(yōu)勢(shì)?我們這個(gè)優(yōu)勢(shì)會(huì)不會(huì)很容易被對(duì)手顛覆呢?我們?cè)撊绾闻Γ膫€(gè)方向努力呢?

最后

無(wú)論怎樣,方舟編譯器都會(huì)在IT歷史上留下濃重的筆墨。衷心期望我個(gè)人或其它朋友能為我們自己的IT成果——方舟編譯器、鴻蒙OS等編寫(xiě)學(xué)習(xí)資料,貢獻(xiàn)自己的微薄力量。

最后的最后

我期望的結(jié)果不是朋友們從我的書(shū)、文章、博客后學(xué)會(huì)了什么知識(shí),干成了什么,而應(yīng)該是說(shuō),神農(nóng),我可是踩在你的肩膀上的喔。

關(guān)于學(xué)習(xí)方面的問(wèn)題,我已經(jīng)討論完了。后面這個(gè)公眾號(hào)將對(duì)一些基礎(chǔ)的技術(shù),新技術(shù)做一些學(xué)習(xí)和分享。也歡迎你的投稿。不過(guò),正如我在公眾號(hào)“聯(lián)系方式”里說(shuō)的那樣——鄭淵潔在童話大王《智齒》里有一句話令我印象深刻,大意是“我有權(quán)保持沉默,但你說(shuō)的每一句話都可能成為我靈感的源泉”。所以,影響不是單向的,很可能我從你那學(xué)到的東西更多。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 開(kāi)源
    +關(guān)注

    關(guān)注

    3

    文章

    4219

    瀏覽量

    46193
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1672

    瀏覽量

    51681
  • 方舟編譯器
    +關(guān)注

    關(guān)注

    0

    文章

    63

    瀏覽量

    774

原文標(biāo)題:鄧凡平:技術(shù)探討之請(qǐng)教方舟編譯器的十個(gè)問(wèn)題

文章出處:【微信號(hào):LinuxDev,微信公眾號(hào):Linux閱碼場(chǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    技術(shù)分享 | RK3506如何交叉編譯frp wireguard

    之前,我們需要搭建交叉編譯環(huán)境,需要將我司提供的交叉編譯器拷貝至ubuntu中并解壓,完成后如下圖所示:交叉編譯器是從buildroot上直接導(dǎo)出,工具的具體路徑
    的頭像 發(fā)表于 12-25 17:29 ?606次閱讀
    <b class='flag-5'>技術(shù)</b>分享 | RK3506如何交叉<b class='flag-5'>編譯</b>frp wireguard

    性能突破 | SpacemiT-X60 在 LLVM 編譯器上實(shí)現(xiàn) 16% 顯著提升

    :ACaseStudyinLLVMOptimizationforRISC-V》。演講基于在進(jìn)迭時(shí)空SpacemiT-X60RISC-V處理上開(kāi)展的十個(gè)月優(yōu)化實(shí)踐,系統(tǒng)闡述如何通過(guò)上游LLVM的多項(xiàng)改進(jìn),顯著提
    的頭像 發(fā)表于 11-21 18:04 ?8911次閱讀
    性能突破 | SpacemiT-X60 在 LLVM <b class='flag-5'>編譯器</b>上實(shí)現(xiàn) 16% 顯著提升

    開(kāi)源鴻蒙技術(shù)大會(huì)2025丨編譯器與編程語(yǔ)言分論壇:語(yǔ)言驅(qū)動(dòng)系統(tǒng)創(chuàng)新,編譯賦能生態(tài)繁榮

    語(yǔ)言設(shè)計(jì)演進(jìn)、編譯器優(yōu)化、工具鏈創(chuàng)新等前沿議題,匯聚產(chǎn)學(xué)研多方力量,共同探討如何通過(guò)語(yǔ)言與編譯技術(shù)推動(dòng)開(kāi)源鴻蒙生態(tài)向更高效、更智能的方向發(fā)展。
    的頭像 發(fā)表于 11-20 17:24 ?939次閱讀
    開(kāi)源鴻蒙<b class='flag-5'>技術(shù)</b>大會(huì)2025丨<b class='flag-5'>編譯器</b>與編程語(yǔ)言分論壇:語(yǔ)言驅(qū)動(dòng)系統(tǒng)創(chuàng)新,<b class='flag-5'>編譯</b>賦能生態(tài)繁榮

    飛凌嵌入式ElfBoard-Vim編輯之GCC編譯器的安裝

    GCC(GNU Compiler Collection)是由GNU開(kāi)發(fā)的編程語(yǔ)言編譯器,最初是作為GNU操作系統(tǒng)的編譯器編寫(xiě)的。GCC是一個(gè)編譯器套件,包含很多軟件包,支持多種語(yǔ)言
    發(fā)表于 10-15 08:44

    GCC編譯器,怎么才能實(shí)現(xiàn)c文件中未被調(diào)用的函數(shù),不會(huì)被編譯呢?

    GCC編譯器,怎么才能實(shí)現(xiàn)c文件中未被調(diào)用的函數(shù),不會(huì)被編譯?有什么編譯選項(xiàng)可以設(shè)置嗎? 移植代碼,有些函數(shù)沒(méi)被調(diào)用的函數(shù)想留在代碼里,但不想被編譯,
    發(fā)表于 09-28 12:25

    如何在Keil中將NuMicro BSP從Arm編譯器5遷移到編譯器6?

    在Keil中將NuMicro BSP從Arm編譯器5遷移到編譯器6!
    發(fā)表于 08-20 06:29

    進(jìn)迭時(shí)空同構(gòu)融合RISC-V AI CPU的Triton算子編譯器實(shí)踐

    Triton是由OpenAI開(kāi)發(fā)的一個(gè)開(kāi)源編程語(yǔ)言和編譯器,旨在簡(jiǎn)化高性能GPU內(nèi)核的編寫(xiě)。它提供了類(lèi)似Python的語(yǔ)法,并通過(guò)高級(jí)抽象降低了GPU編程的復(fù)雜性,同時(shí)保持了高性能。目前
    的頭像 發(fā)表于 07-15 09:04 ?1910次閱讀
    進(jìn)迭時(shí)空同構(gòu)融合RISC-V AI CPU的Triton算子<b class='flag-5'>編譯器</b>實(shí)踐

    邊緣設(shè)備AI部署:編譯器如何實(shí)現(xiàn)輕量化與高性能?

    電子發(fā)燒友網(wǎng)綜合報(bào)道 AI編譯器是專(zhuān)門(mén)為人工智能(AI)和機(jī)器學(xué)習(xí)(ML)模型設(shè)計(jì)的編譯器,其核心目標(biāo)是將高級(jí)的AI模型描述(如計(jì)算圖、神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu))轉(zhuǎn)換為特定硬件平臺(tái)(如CPU、GPU、FPGA
    的頭像 發(fā)表于 07-06 05:49 ?6676次閱讀

    編譯器功能安全驗(yàn)證的關(guān)鍵要素

    在汽車(chē)、工業(yè)、醫(yī)療等安全關(guān)鍵型應(yīng)用中,確保功能安全合規(guī)性需要嚴(yán)格的工具鏈驗(yàn)證。開(kāi)發(fā)安全關(guān)鍵型軟件的企業(yè)必須遵守ISO 26262、IEC 61508、ISO 62304等國(guó)際標(biāo)準(zhǔn)對(duì)編譯器工具鏈進(jìn)行全面的驗(yàn)證。
    的頭像 發(fā)表于 07-05 13:37 ?1589次閱讀

    兆松科技ZCC編譯器全面支持芯來(lái)科技NA系列處理

    近日,兆松科技(武漢)有限公司(以下簡(jiǎn)稱“兆松科技”)宣布正式發(fā)布高性能RISC-V編譯器ZCC 4.0.0版本。
    的頭像 發(fā)表于 06-11 09:56 ?1728次閱讀

    RISC-V架構(gòu)下的編譯器自動(dòng)向量化

    高性能算力生態(tài)的建設(shè),正投入編譯器自動(dòng)向量化優(yōu)化等多項(xiàng)關(guān)鍵技術(shù),全面助力RISC-V的高性能發(fā)展。RISC-V向量設(shè)計(jì)SpacemiT在現(xiàn)代CPU中,向量支持是算力的
    的頭像 發(fā)表于 06-06 16:59 ?1252次閱讀
    RISC-V架構(gòu)下的<b class='flag-5'>編譯器</b>自動(dòng)向量化

    RVCT編譯器是否比GNU的編譯器的代碼執(zhí)行速度更快?

    使用FX3S遇到了RVCT編譯器的問(wèn)題。 1、在SDK的release note中有支持RVCT的描述, 但是在EZ USB Suite的設(shè)置中沒(méi)有找到RVCT的選項(xiàng), 請(qǐng)問(wèn)支持的具體版本
    發(fā)表于 05-08 07:49

    HighTec編譯器全面支持芯馳科技車(chē)規(guī)MCU芯片E3650

    近日,HighTec與芯馳科技共同宣布HighTec編譯器套件將全面支持芯馳新一代旗艦智控MCU-E3650芯片。此次合作,進(jìn)一步豐富了芯馳車(chē)芯產(chǎn)品的工具鏈生態(tài),雙方將攜手為客戶提供高性能、高安全性的解決方案。
    的頭像 發(fā)表于 04-28 15:20 ?1817次閱讀

    HighTec編譯器全面適配紫光同芯THA6 Gen2系列產(chǎn)品

    近日,紫光同芯與全球領(lǐng)先的汽車(chē)級(jí)C/C++編譯器供應(yīng)商HighTec共同宣布,HighTec編譯器完成對(duì)紫光同芯THA6 Gen2系列產(chǎn)品的全面適配。此次合作實(shí)現(xiàn)了從指令集優(yōu)化到功能安全的全棧支持,是國(guó)產(chǎn)高端車(chē)規(guī)芯片與國(guó)際領(lǐng)先開(kāi)發(fā)工具的深度
    的頭像 發(fā)表于 04-02 09:42 ?1194次閱讀

    請(qǐng)問(wèn)基于GCC編譯器的initcall在STM32如何實(shí)現(xiàn)?

    請(qǐng)問(wèn)各位基于GCC編譯器的initcall在STM32如何實(shí)現(xiàn)?有哪位實(shí)現(xiàn)了嗎?
    發(fā)表于 03-13 06:24