chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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è)備如何統(tǒng)一語(yǔ)言編程平臺(tái)高效開(kāi)發(fā)?本文為你揭秘

HarmonyOS開(kāi)發(fā)者 ? 來(lái)源:未知 ? 2023-05-11 20:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

隨著數(shù)字化時(shí)代的發(fā)展,手機(jī)、平板、PC、電視、智能手表、車(chē)機(jī)等智能設(shè)備的普及率越來(lái)越高,但不同設(shè)備往往搭載了不同的操作系統(tǒng)。面對(duì)不同的操作系統(tǒng)與開(kāi)發(fā)框架,應(yīng)用開(kāi)發(fā)難度大、成本高;同時(shí),不同設(shè)備之間交互匱乏、體驗(yàn)割裂,難以為用戶帶來(lái)一致性的應(yīng)用交互體驗(yàn)。
HarmonyOS是一款面向全場(chǎng)景的分布式操作系統(tǒng),能夠兼容手機(jī)、平板、PC、智慧屏、智能手表、車(chē)機(jī)等智能設(shè)備。我們知道,HarmonyOS應(yīng)用開(kāi)發(fā)需要使用高級(jí)編程語(yǔ)言,包括TypeScript(以下簡(jiǎn)稱(chēng)“TS”)、JavaScript(以下簡(jiǎn)稱(chēng)“JS”)、基于TS增強(qiáng)的ArkTS等,還需要配套相應(yīng)的工具鏈和運(yùn)行時(shí)實(shí)現(xiàn)高效開(kāi)發(fā)和運(yùn)行。面對(duì)不同設(shè)備,開(kāi)發(fā)者如何使用同一套應(yīng)用框架開(kāi)發(fā)應(yīng)用,讓用戶獲得統(tǒng)一的應(yīng)用交互體驗(yàn)?zāi)兀?/span>

基于此,方舟編譯器(以下稱(chēng)“ArkCompiler”)應(yīng)運(yùn)而生。ArkCompiler支持ArkTS/TS應(yīng)用預(yù)先編譯優(yōu)化機(jī)器碼,帶來(lái)高性能的運(yùn)行體驗(yàn);同時(shí),ArkCompiler的并發(fā)實(shí)例啟動(dòng)更加輕快,并且提供混淆字節(jié)碼能力,有效提升了源碼的安全性。ArkCompiler助力開(kāi)發(fā)者更加高效、便捷、安全地開(kāi)發(fā)HarmonyOS應(yīng)用。


什么是ArkCompiler


ArkCompiler作為HarmonyOS應(yīng)用開(kāi)發(fā)的統(tǒng)一編程平臺(tái),包含編譯器、工具鏈、運(yùn)行時(shí)等關(guān)鍵部件,支持ArkTS、TS、JS等高級(jí)編程語(yǔ)言的開(kāi)發(fā)、調(diào)試調(diào)優(yōu)、運(yùn)行等業(yè)務(wù)。

接下來(lái),我們來(lái)看一下ArkCompiler編譯工具鏈與運(yùn)行時(shí)的架構(gòu)。

編譯工具鏈架構(gòu)

ArkCompiler的編譯工具鏈以ArkTS/TS/JS源碼作為輸入,將其編譯生成為abc(ArkCompilerBytecode,即方舟字節(jié)碼)文件。

運(yùn)行時(shí)架構(gòu)

ArkCompiler運(yùn)行時(shí)包含了執(zhí)行引擎、內(nèi)存管理器、語(yǔ)言?xún)?nèi)建標(biāo)準(zhǔn)庫(kù)等部件,直接運(yùn)行字節(jié)碼文件,實(shí)現(xiàn)對(duì)應(yīng)語(yǔ)言規(guī)范的語(yǔ)義邏輯。



ArkCompiler的性能亮點(diǎn)


動(dòng)態(tài)類(lèi)型語(yǔ)言由于運(yùn)行前無(wú)法確定對(duì)象類(lèi)型,需要等程序運(yùn)行一段時(shí)間后,JIT Compiler(Just-In-Time Compiler,即時(shí)編譯器)才能根據(jù)抓取到的運(yùn)行信息明確對(duì)象類(lèi)型并編譯生成對(duì)應(yīng)的優(yōu)化機(jī)器碼。

而靜態(tài)類(lèi)型語(yǔ)言則可以根據(jù)確定的對(duì)象類(lèi)型,直接編譯生成對(duì)應(yīng)的優(yōu)化機(jī)器碼,啟動(dòng)即可獲得高性能,二者的啟動(dòng)性能差異比較顯著。

編譯優(yōu)化視角主要區(qū)別

基于JS拓展出類(lèi)型概念的TS已經(jīng)成為了前十流行的語(yǔ)言,然而業(yè)界目前并沒(méi)有直接運(yùn)行TS的引擎,如需運(yùn)行TS,要先將TS轉(zhuǎn)換成JS,再通過(guò)JS引擎運(yùn)行。那么,TS的類(lèi)型信息也就在轉(zhuǎn)換過(guò)程中丟棄了,運(yùn)行時(shí)無(wú)法接收類(lèi)型信息并作相應(yīng)的優(yōu)化。然而我們發(fā)現(xiàn),大部分情況下,JS程序中的對(duì)象類(lèi)型是單一固定的,這也表明JS的對(duì)象類(lèi)型大部分情況下保持不變。TS的類(lèi)型是不是也可以在代碼運(yùn)行前直接做編譯優(yōu)化呢?

2.1 業(yè)界JS引擎方案

JS開(kāi)發(fā)者直接把源碼打到應(yīng)用包里,當(dāng)運(yùn)行時(shí),引擎解析JS源碼需要先將JS源碼編譯成字節(jié)碼,然后再執(zhí)行字節(jié)碼。引擎抓取剖析一些運(yùn)行時(shí)的信息,再使用JIT Compiler在運(yùn)行時(shí)編譯生成優(yōu)化機(jī)器碼,最后才能執(zhí)行優(yōu)化機(jī)器碼,這樣才能以比較高的性能執(zhí)行JS。

業(yè)界JS引擎方案

2.2 ArkCompiler的優(yōu)勢(shì)

高性能ArkTS引擎—AOT編譯

我們前面已經(jīng)分析過(guò),大部分情況下,JS的對(duì)象類(lèi)型保持不變,而TS又會(huì)攜帶對(duì)象類(lèi)型。因此,ArkCompiler讓ArkTS/TS能夠持平靜態(tài)語(yǔ)言的啟動(dòng)性能,其實(shí)就是利用語(yǔ)言里的類(lèi)型信息,讓ArkTS/TS像靜態(tài)語(yǔ)言一樣可以直接編譯生成優(yōu)化機(jī)器碼。

Bytecode Compiler(字節(jié)碼編譯器)會(huì)生成帶類(lèi)型的字節(jié)碼,AOT Compiler(Ahead-Of-Time Compiler,預(yù)先編譯器)會(huì)根據(jù)類(lèi)型字節(jié)碼預(yù)生成相關(guān)的類(lèi)型對(duì)象,結(jié)合PGO1的配置文件信息,進(jìn)行編譯優(yōu)化最終生成對(duì)應(yīng)的優(yōu)化機(jī)器碼。

ArkCompiler支持應(yīng)用運(yùn)行前就編譯出優(yōu)化機(jī)器碼和字節(jié)碼。當(dāng)應(yīng)用在移動(dòng)設(shè)備上首次運(yùn)行時(shí),就可以直接運(yùn)行高性能優(yōu)化機(jī)器碼了。



ArkCompiler的并發(fā)亮點(diǎn)


并發(fā)實(shí)例運(yùn)行對(duì)比

3.1 業(yè)界JS引擎的Actor并發(fā)模型

上圖左側(cè)是業(yè)界并發(fā)實(shí)例的運(yùn)行情況,由于JS是一門(mén)單線程語(yǔ)言,JS引擎在設(shè)計(jì)之初也沒(méi)有考慮多線程運(yùn)行的支持和優(yōu)化。

從Actor并發(fā)模型的示例圖中,我們可以看出,每一個(gè)并發(fā)實(shí)例都創(chuàng)建了一個(gè)完整的引擎實(shí)例來(lái)支持運(yùn)行。它的優(yōu)勢(shì)在于,類(lèi)Actor的接口可以讓開(kāi)發(fā)者不需要關(guān)心共享狀態(tài)和鎖,容易維護(hù)和測(cè)試,而且非常容易把并發(fā)實(shí)例遷移成分布式的服務(wù)。不過(guò)在移動(dòng)應(yīng)用的場(chǎng)景中,這樣的實(shí)現(xiàn)也是HTML規(guī)范把Web Worker描述成啟動(dòng)慢并且內(nèi)存開(kāi)銷(xiāo)大的主要原因。

3.2 ArkCompiler的Lite Actor并發(fā)優(yōu)勢(shì)

上圖右側(cè)是ArkCompiler實(shí)現(xiàn)并發(fā)的運(yùn)行情況。ArkCompiler的Lite Actor的實(shí)現(xiàn),實(shí)質(zhì)還是Actor模型,但是通過(guò)共享進(jìn)程內(nèi)各并發(fā)實(shí)例之間的不可變對(duì)象,把基礎(chǔ)設(shè)施分層和輕量化,在各實(shí)例之間重用了一些公共基礎(chǔ)設(shè)施,讓并發(fā)實(shí)例運(yùn)行更輕快。ArkCompiler的實(shí)現(xiàn)中,新增一個(gè)并發(fā)實(shí)例只需要拉起相應(yīng)獨(dú)有的部分。

基于此,我們和瀏覽器頭部引擎做了一個(gè)對(duì)比,在一定負(fù)載下,我們的并發(fā)啟動(dòng)時(shí)間和啟動(dòng)內(nèi)存取得了顯著提升。根據(jù)實(shí)驗(yàn)數(shù)據(jù)表明,相較于業(yè)界的方案,Lite Actor并發(fā)實(shí)例啟動(dòng)時(shí)間和啟動(dòng)內(nèi)存均優(yōu)化了50%。



ArkCompiler的安全性亮點(diǎn)


字節(jié)碼混淆對(duì)比

4.1 業(yè)界JS引擎的安全性

現(xiàn)行的JS引擎,往往采用只有名稱(chēng)混淆的UglifyJS2,應(yīng)用包中的源碼也是可見(jiàn)可調(diào)試,商業(yè)應(yīng)用源碼的安全性相對(duì)較差。

4.2 ArkCompiler的安全性?xún)?yōu)勢(shì)

在ArkCompiler中,Hap包包含了混淆后的字節(jié)碼,相較于直接攜帶源碼,提高了開(kāi)發(fā)者代碼的安全性。

HarmonyOS的代碼保護(hù),打包的是二進(jìn)制的ArkCompiler字節(jié)碼。即使經(jīng)過(guò)ArkCompiler編譯運(yùn)行時(shí)提供的Disassembler反編譯,也只有字節(jié)碼能被看到,無(wú)法直接修改調(diào)試運(yùn)行。



總結(jié)


目前,運(yùn)行在ArkCompiler上的開(kāi)發(fā)語(yǔ)言ArkTS,在TS的基礎(chǔ)上主要拓展了聲明式范式和狀態(tài)模式的UI編程。往后我們會(huì)在靜態(tài)模式、并發(fā)、安全等方面持續(xù)增強(qiáng),讓ArkTS成為更卓越的應(yīng)用開(kāi)發(fā)語(yǔ)言。

面對(duì)IoT時(shí)代的發(fā)展,我們會(huì)結(jié)合HarmonyOS應(yīng)用生態(tài)、開(kāi)發(fā)體驗(yàn)和用戶體驗(yàn)等方面的需求,讓ArkCompiler與硬件、操作系統(tǒng)、開(kāi)發(fā)框架、編程語(yǔ)言協(xié)同設(shè)計(jì)優(yōu)化;同時(shí),在多語(yǔ)言統(tǒng)一編譯運(yùn)行和多設(shè)備支持的基礎(chǔ)上,ArkCompiler讓HarmonyOS應(yīng)用的開(kāi)發(fā)和運(yùn)行效率顯著提升。

未來(lái),ArkCompiler在持續(xù)優(yōu)化基礎(chǔ)體驗(yàn)的同時(shí),會(huì)更進(jìn)一步結(jié)合HarmonyOS萬(wàn)物互聯(lián)的需求,在跨端遷移、多端協(xié)同等創(chuàng)新場(chǎng)景,從編譯器和運(yùn)行時(shí)等方面提供底層的解決方案和優(yōu)化機(jī)制,提升分布式應(yīng)用的開(kāi)發(fā)和運(yùn)行體驗(yàn)。

說(shuō)明:
1. PGO即Profileguided optimization,是一種基于性能分析(profiling)的編譯優(yōu)化技術(shù)。

2. UglifyJS是前端開(kāi)發(fā)打包的最常用工具之一,包含JS解析器、代碼最小化、壓縮、美化的工具集。


文章推薦

點(diǎn)擊下方鏈接,查看更多文章

DevEco Studio 3.1 Beta新特性知多少

DevEco Device Tool 3.1 Release新版本發(fā)布

全新適配鴻蒙生態(tài),Cocos引擎助力3D應(yīng)用開(kāi)發(fā)

HarmonyOS Connect認(rèn)證測(cè)試



歡迎點(diǎn)擊|閱讀原文

進(jìn)入了解更多ArkCompiler架構(gòu)信息


原文標(biāo)題:不同設(shè)備如何統(tǒng)一語(yǔ)言編程平臺(tái)高效開(kāi)發(fā)?本文為你揭秘

文章出處:【微信公眾號(hào):HarmonyOS開(kāi)發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

聲明:本文內(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)投訴
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2141

    瀏覽量

    35058

原文標(biāo)題:不同設(shè)備如何統(tǒng)一語(yǔ)言編程平臺(tái)高效開(kāi)發(fā)?本文為你揭秘

文章出處:【微信號(hào):HarmonyOS_Dev,微信公眾號(hào):HarmonyOS開(kāi)發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    匠芯創(chuàng)發(fā)布新版GUI開(kāi)發(fā)工具 新增多國(guó)語(yǔ)言設(shè)置等功能

    近日,匠芯創(chuàng)自主研發(fā)的GUI開(kāi)發(fā)工具AiUIBuilder推出全新V1.3.0版本。作為款基于LVGL的UI設(shè)計(jì)工具,AiUIBuilder致力于嵌入式平臺(tái)的圖形應(yīng)用
    發(fā)表于 07-16 13:54

    gitee 支持的編程語(yǔ)言有哪些

    Gitee(碼云)是個(gè)基于 Git 的代碼托管和研發(fā)協(xié)作平臺(tái),類(lèi)似于 GitHub 和 GitLab。它支持多種編程語(yǔ)言,允許開(kāi)發(fā)者托管和
    的頭像 發(fā)表于 01-06 09:50 ?975次閱讀

    Triton編譯器支持的編程語(yǔ)言

    編寫(xiě)和優(yōu)化深度學(xué)習(xí)代碼。Python是種廣泛使用的高級(jí)編程語(yǔ)言,具有簡(jiǎn)潔易讀、易于上手、庫(kù)豐富等特點(diǎn),非常適合用于深度學(xué)習(xí)應(yīng)用的開(kāi)發(fā)。 二、領(lǐng)域特定
    的頭像 發(fā)表于 12-24 17:33 ?1319次閱讀

    工業(yè)網(wǎng)絡(luò)管理新紀(jì)元:揭秘五大“利器”,化繁為簡(jiǎn)的智慧轉(zhuǎn)型

    亟需解決的難題。本文揭秘五大“秘密武器”, 助力工業(yè)網(wǎng)絡(luò)管理化繁為簡(jiǎn),邁向智能化、高效化 的新紀(jì)元。 秘密武器 統(tǒng)一
    的頭像 發(fā)表于 12-21 17:51 ?664次閱讀
    工業(yè)網(wǎng)絡(luò)管理新紀(jì)元:<b class='flag-5'>揭秘</b>五大“利器”,化繁為簡(jiǎn)的智慧轉(zhuǎn)型

    語(yǔ)言模型開(kāi)發(fā)語(yǔ)言是什么

    在人工智能領(lǐng)域,大語(yǔ)言模型(Large Language Models, LLMs)背后,離不開(kāi)高效開(kāi)發(fā)語(yǔ)言和工具的支持。下面,AI部落小編為您介紹大
    的頭像 發(fā)表于 12-04 11:44 ?932次閱讀

    ov華米聯(lián)手打造OneLink統(tǒng)一鏈接平臺(tái)

    小米應(yīng)用商店近日攜手華為、OPPO、vivo等主流手機(jī)廠商,共同推出了個(gè)名為OneLink的統(tǒng)一鏈接平臺(tái)。這平臺(tái)旨在簡(jiǎn)化
    的頭像 發(fā)表于 11-18 15:01 ?1658次閱讀

    如何選擇適合自己的編程語(yǔ)言

    步。 1. 確定目標(biāo)和興趣 在選擇編程語(yǔ)言之前,首先要明確自己的目標(biāo)和興趣。這包括你想要開(kāi)發(fā)什么類(lèi)型的項(xiàng)目,以及對(duì)哪些技術(shù)領(lǐng)域感興趣。例如,如果
    的頭像 發(fā)表于 11-15 09:37 ?2323次閱讀

    編程語(yǔ)言的誤區(qū)與常見(jiàn)問(wèn)題

    : 選擇編程語(yǔ)言時(shí),應(yīng)考慮項(xiàng)目需求、個(gè)人興趣以及語(yǔ)言的適用性。例如,如果對(duì)Web開(kāi)發(fā)感興趣,那么學(xué)習(xí)JavaScript可能是
    的頭像 發(fā)表于 11-15 09:35 ?966次閱讀

    NPU支持的編程語(yǔ)言有哪些

    NPU(Neural Processing Unit)是種專(zhuān)門(mén)深度學(xué)習(xí)和人工智能應(yīng)用設(shè)計(jì)的處理器。NPU支持的編程語(yǔ)言通常與它所集成的平臺(tái)
    的頭像 發(fā)表于 11-15 09:21 ?2386次閱讀

    串口屏支持哪些編程語(yǔ)言開(kāi)發(fā)環(huán)境?

    串口屏作為種常用的顯示和交互設(shè)備,支持多種編程語(yǔ)言開(kāi)發(fā)環(huán)境。以下是對(duì)串口屏支持的編程
    的頭像 發(fā)表于 11-13 11:45 ?973次閱讀
    串口屏支持哪些<b class='flag-5'>編程</b><b class='flag-5'>語(yǔ)言</b>和<b class='flag-5'>開(kāi)發(fā)</b>環(huán)境?

    ARM開(kāi)發(fā)編程語(yǔ)言選擇

    隨著物聯(lián)網(wǎng)(IoT)和智能設(shè)備的發(fā)展,ARM開(kāi)發(fā)板因其低功耗、高性能和靈活性而受到開(kāi)發(fā)者的青睞。 C語(yǔ)言 C語(yǔ)言
    的頭像 發(fā)表于 11-05 11:14 ?1236次閱讀

    MCU編程語(yǔ)言開(kāi)發(fā)環(huán)境介紹

    MCU編程語(yǔ)言 MCU編程語(yǔ)言是用于編寫(xiě)MCU程序的高級(jí)編程語(yǔ)言,它們使得
    的頭像 發(fā)表于 11-01 11:51 ?2713次閱讀

    C語(yǔ)言與其他編程語(yǔ)言的比較

    C語(yǔ)言作為種歷史悠久的編程語(yǔ)言,自其誕生以來(lái),直在軟件開(kāi)發(fā)領(lǐng)域扮演著重要角色。它以其
    的頭像 發(fā)表于 10-29 17:30 ?1757次閱讀

    Orin芯片的編程語(yǔ)言支持

    Orin是款高度集成、高性能的車(chē)載計(jì)算平臺(tái),由英偉達(dá)推出,并采用了英偉達(dá)自家的Volta架構(gòu)GPU和其他高級(jí)處理器技術(shù)。關(guān)于Orin芯片的編程語(yǔ)言支持,可以從以下幾個(gè)方面進(jìn)行介紹:
    的頭像 發(fā)表于 10-27 16:45 ?1416次閱讀

    CNC系統(tǒng)一般可用幾種編程語(yǔ)言

    ?! ?b class='flag-5'>高效性:CLData語(yǔ)言具有高效編程能力,可以快速完成數(shù)控機(jī)床的編程任務(wù)。  NCL(Numerical Control Langu
    的頭像 發(fā)表于 10-23 15:52 ?1967次閱讀