女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

什么是方舟編譯器?

電子工程師 ? 來源:YXQ ? 2019-05-09 16:45 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

“它就是能讓安卓上的應用,跑得跟蘋果iOS上一樣快。”面對臺下的記者,華為消費者BG軟件部總裁王成錄這么描述方舟編譯器的作用。

此時,距離這個吊起了安卓應用開發者們興趣的編譯器在發布會上被公開,正好過去了兩周。

什么是方舟編譯器?

在4月11日的華為P30中國發布會上,華為消費者業務CEO余承東正式發布了華為方舟編譯器,并表示這個編譯器能改善安卓應用編譯效率,從原先的邊解釋邊執行轉變為全程機器碼高效運行程序。

編譯器,就是將“一種計算機語言(通常為高級語言)”翻譯為“另一種計算機語言(通常為低級語言)”的程序。高級計算機語言便于開發者們編寫、閱讀交流以及維護,如Pascal、C、C++Java等,而低級機器語言是計算機能直接解讀、運行的機器代碼(Machine code)。

華為的方舟編譯器,就是將安卓應用開發者們所使用的JAVA、C/C++們轉換成機器代碼。據王成錄透露,華為從2009年就開始考慮做編譯器,“因為咱們海思做了芯片以后,需要有自己的編譯器才能真正發揮芯片的能力,從2013年開始,有華為自己的自研編譯器了,叫HCC。”

根據時間表顯示,在2012年,華為成立了編譯器與編程語言實驗室,在2014年,技術大牛Fred Chow加入華為負責編譯器的主架構,經過十年的摸索,華為終于推出了方舟編譯器。

根據華為官方公布的數據顯示,與此前的安卓應用開發相比,方舟編譯器能夠提升24%的系統操作流暢度,提升44%的系統響應能力,還能提升60%的第三方應用(微博極速版)操作流暢度。

它是怎么做到的?

01

消除了跨語言調用開銷

王成錄向記者們詳細闡述了方舟編譯器能提升流暢度、響應能力的工作原理

首先,方舟編譯器是多語言聯合優化編譯器,“消除了跨語言調用開銷,這是影響Android性能開銷比較大的核心原因之一。”

據王成錄介紹,目前Android應用市場里95%的APP都是多種開發語言:“邏輯部分,都是Java代碼,但是為了增強它的能力,可能所有的APP的開發者,都會用C寫個庫供Java來調用。”

Java是一門面向對象編程語言,具有簡單性、面向對象、分布式等特點,雖然運行效率不及C++,但開發效率高、跨平臺性更強的優勢,讓JAVA成為了安卓開發的首選,而通過JNI調用本地C/C++庫也是目前開發者們都在做的。

但,Java和C語言之間使用接口調用,必然會形成額外的性能開銷;王成錄表示,華為方舟編譯器將不同語言代碼在開發環境中編譯成一套可執行文件,這樣執行效率更高。

02

消除了影響性能的虛擬機機制并實時回收內存

王成錄認為華為方舟編譯器的第二大特點是消除了影響性能的虛擬機機制。

在安卓系統發展過程中,虛擬機不可被忽視:Android系統是以Linux為內核構建的,為了降低應用的開發難度,并將其適配到不同硬件配置的設備上,Google在Linux內核之上構建了一個虛擬機,Android應用使用java開發,運行在虛擬機之上。

在安卓4.4之前,Dalvik就是安卓系統上使用的虛擬機,基于寄存器。從Android 2.2開始,Dalvik開始使用JIT(Just In Time)技術來進行代碼轉譯,將頻繁調用的代碼轉換為二進制碼,不用每次解釋,而在此前Dalvik虛擬機將所有的Java語句逐句解釋執行,效率很低。

但Dalvik越來越不能滿足需求,從Android 5.0開始,虛擬機從Dalvik換成了ART。

ART(Android RunTime)虛擬機,采用AOT(Ahead Of Time)技術,會在應用程序安裝時就預編譯字節碼到機器語言,不再在執行時解釋,從而優化了應用運行的速度。

所以,到目前為止,安卓系統的任何機器只要裝上應用裝上就會分配好虛擬機,占用額外的系統資源,消費者從應用市場下載APP以后,真正解釋成機器指令和執行文件是在手機上的虛擬機里做的,因此對系統資源要求高。

王成錄表示,ART的執行效率雖然提高了,但是對于那些Java動態特性的部分,仍然做不到直接編譯,還是要解釋執行。

這源于Java不是Python那樣的動態語言,但開發者經常會用到它一個非常突出的動態相關機制:反射機制。Java反射機制主要提供了以下功能:在運行時判斷任意一個對象所屬的類、在運行時構造任意一個類的對象、在運行時判斷任意一個類所具有的成員變量和方法、在運行時調用任意一個對象的方法、生成動態代理。

王成錄表示,Java動態特性使得開發者“不需要把所有的程序都寫好,只要能夠運行時實現調用就可以了。”但這部分往往只能在運行時進行處理。而方舟編譯器最大的突破就在于此:把動態的部分全部靜態編譯掉。

這確實很難。

王成錄認為,這就像一個優秀的翻譯官,一定要對漢語言文學理解的非常到位,然后再對英語理解非常到位;所以,核心是一定要對Java語言動態特性非常深入的了解和理解,“Java有非常多的庫和業務邏輯,這些業務邏輯它生成各種各樣的應用和代碼和業務邏輯,這些業務邏輯就需要團隊不斷地去理解它,這個理解有點類似于做代碼測試的遍歷一樣,我讓這個代碼全跑到,才知道可不可以,它需要非常多的時間去積累,我對于庫的理解,當然需要技術,我理解這個庫本身的具體含義,有點像AI里面,我要收集東西,訓練一個模型。如果這個東西沒有的話,我訓練出來的模型不好,我這個機器沒法執行,這個道理特別像。”

然后還需要對這些安卓現有的應用可能會用到哪些庫、這些庫之間需要怎么用,需要大量的分析運行狀態,才能夠將這些動態特性完成提前的編譯。“實際上華為對于Android整個系統各種應用的運行,做了非常仔細去確認,相當于一個應用從底層起來,一直跑完以后,到底經過哪些過程,這些過程可能會帶來什么問題?去哪些庫取東西,這些東西積累越多,放到動態庫里面,把它編譯完了。有了這2個積累,才能做成這件事情。”

對于效果,有開發者向網易科技表示,“做成了靜態編譯,速度肯定會更快。”

方舟編譯器還能提供更高效的內存回收機制。

王成錄表示,Android的原生內存回收,在全局回收時需要暫停應用,等待回收完成,這是產生隨機卡頓的重要原因,“而在方舟編譯器里,會在編譯時為程序配備及時回收的內存處理機制,在程序執行過程當中實時處理。”

03

可以靈活實現不同應用的性能優化

王成錄表示,方舟編譯器的第三個亮點是可以靈活實現不同應用的性能優化。

他表示,現有的安卓編譯大部分代碼在虛擬機環境運行,而虛擬機的創建由于來自于同一套“模板”,難以作深度的優化:不同應用的優化訴求不一樣;相比之下,方舟編譯器不一樣,每個應用編譯優化方案自己來定,分別形成不同應用優化后的機器碼,“相當于說,我們給每一個有追求的應用開發者,都有了一個把自己的應用做的更好的機會,不再受限于Android虛擬機的限制。”

王成錄稱,方舟編譯器最理想的目標就是“上層業務代碼不需要改,大家只需要通過華為的方舟編譯器做重新編譯就足夠了。”

他希望,Android陣營所有合作伙伴大家一起努力,從各自場景、各自平臺不斷去打磨它。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 華為
    +關注

    關注

    216

    文章

    35207

    瀏覽量

    255841
  • 編譯器
    +關注

    關注

    1

    文章

    1662

    瀏覽量

    50201
  • 方舟編譯器
    +關注

    關注

    0

    文章

    63

    瀏覽量

    438

原文標題:讓華為P30運行如飛的,是這個叫方舟的……

文章出處:【微信號:smartman163,微信公眾號:網易智能】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    【「鴻蒙操作系統設計原理與架構」閱讀體驗】02-華為鴻蒙設計理念

    方舟編譯器提升應用運行效率 :方舟編譯器是 HarmonyOS 的一項重要技術創新,它致力于解決傳統編譯方式存在的效率問題,大幅提升
    發表于 02-23 16:16

    什么樣的代碼會被編譯器優化

    現在的編譯器有多智能,可能你辛辛苦苦寫的代碼,在編譯器看來就是幾句廢話,直接被刪除掉。
    的頭像 發表于 01-16 16:38 ?592次閱讀

    Triton編譯器與GPU編程的結合應用

    Triton編譯器簡介 Triton編譯器是一種針對并行計算優化的編譯器,它能夠自動將高級語言代碼轉換為針對特定硬件優化的低級代碼。Triton編譯器的核心優勢在于其能夠識別并行模式,
    的頭像 發表于 12-25 09:13 ?824次閱讀

    Triton編譯器如何提升編程效率

    在現代軟件開發中,編譯器扮演著至關重要的角色。它們不僅將高級語言代碼轉換為機器可執行的代碼,還通過各種優化技術提升程序的性能。Triton 編譯器作為一種先進的編譯器,通過多種方式提升編程效率,使得
    的頭像 發表于 12-25 09:12 ?744次閱讀

    Triton編譯器在高性能計算中的應用

    高性能計算(High-Performance Computing,HPC)是現代科學研究和工程計算中不可或缺的一部分。隨著計算需求的不斷增長,對計算資源的要求也越來越高。Triton編譯器作為一種
    的頭像 發表于 12-25 09:11 ?964次閱讀

    Triton編譯器的優化技巧

    在現代計算環境中,編譯器的性能對于軟件的運行效率至關重要。Triton 編譯器作為一個先進的編譯器框架,提供了一系列的優化技術,以確保生成的代碼既高效又適應不同的硬件架構。 1. 指令選擇
    的頭像 發表于 12-25 09:09 ?986次閱讀

    Triton編譯器的優勢與劣勢分析

    Triton編譯器作為一種新興的深度學習編譯器,具有一系列顯著的優勢,同時也存在一些潛在的劣勢。以下是對Triton編譯器優勢與劣勢的分析: 優勢 高效性能優化 : Triton編譯器
    的頭像 發表于 12-25 09:07 ?1179次閱讀

    Triton編譯器在機器學習中的應用

    1. Triton編譯器概述 Triton編譯器是NVIDIA Triton推理服務平臺的一部分,它負責將深度學習模型轉換為優化的格式,以便在NVIDIA GPU上高效運行。Triton編譯器支持
    的頭像 發表于 12-24 18:13 ?985次閱讀

    Triton編譯器支持的編程語言

    Triton編譯器支持的編程語言主要包括以下幾種: 一、主要編程語言 Python :Triton編譯器通過Python接口提供了對Triton語言和編譯器的訪問,使得用戶可以在Python環境中
    的頭像 發表于 12-24 17:33 ?963次閱讀

    Triton編譯器與其他編譯器的比較

    Triton編譯器與其他編譯器的比較主要體現在以下幾個方面: 一、定位與目標 Triton編譯器 : 定位:專注于深度學習中最核心、最耗時的張量運算的優化。 目標:提供一個高度抽象、靈活、高效
    的頭像 發表于 12-24 17:25 ?999次閱讀

    Triton編譯器功能介紹 Triton編譯器使用教程

    Triton 是一個開源的編譯器前端,它支持多種編程語言,包括 C、C++、Fortran 和 Ada。Triton 旨在提供一個可擴展和可定制的編譯器框架,允許開發者添加新的編程語言特性和優化技術
    的頭像 發表于 12-24 17:23 ?1676次閱讀

    C7000優化C/C++編譯器

    電子發燒友網站提供《C7000優化C/C++編譯器.pdf》資料免費下載
    發表于 10-30 09:45 ?0次下載
    C7000優化C/C++<b class='flag-5'>編譯器</b>

    Keil編譯器優化方法

    我們都知道,代碼是可以通過編譯器優化的,有的時候,為了提高運行速度或者減少代碼尺寸,會開啟優化選項。
    的頭像 發表于 10-23 16:35 ?2068次閱讀
    Keil<b class='flag-5'>編譯器</b>優化方法

    AI編譯器技術剖析

    隨著人工智能技術的飛速發展,AI編譯器作為一種新興的編譯技術逐漸進入人們的視野。AI編譯器不僅具備傳統編譯器的功能,如將高級語言編寫的源代碼轉換為機器可執行的代碼,還融入了人工智能技術
    的頭像 發表于 07-17 18:28 ?2696次閱讀

    人工智能編譯器與傳統編譯器的區別

    人工智能編譯器(AI編譯器)與傳統編譯器在多個方面存在顯著的差異。這些差異主要體現在設計目標、功能特性、優化策略、適用范圍以及技術復雜性等方面。以下是對兩者區別的詳細探討,旨在全面解析其內在差異。
    的頭像 發表于 07-17 18:19 ?2947次閱讀