女人荫蒂被添全过程13种图片,亚洲+欧美+在线,欧洲精品无码一区二区三区 ,在厨房拨开内裤进入毛片

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

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

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

揭秘動(dòng)態(tài)化跨端框架在鴻蒙系統(tǒng)下的高性能解決方案

京東云 ? 來(lái)源:京東科技 胡大海 ? 作者:京東科技 胡大海 ? 2024-10-08 13:46 ? 次閱讀

作者:京東科技 胡大海

前言

動(dòng)態(tài)化跨端框架(后文統(tǒng)稱(chēng)“動(dòng)態(tài)化”)是一個(gè)由京東金融大前端團(tuán)隊(duì)全自主研發(fā)的,一份代碼,可以在HarmonyOSiOSAndroid、Web四端運(yùn)行的跨平臺(tái)解決方案。在研發(fā)團(tuán)隊(duì)使用后可大幅降低研發(fā)人力成本;為業(yè)務(wù)提供實(shí)時(shí)觸達(dá)、A/B觸達(dá)等能力以提升業(yè)務(wù)投放效率;同時(shí)保障了C端用戶(hù)優(yōu)秀的用戶(hù)體驗(yàn)。

一、動(dòng)態(tài)化跨端框架原理介紹

wKgaomcExxeAVKpeAALojfzrv6c694.png

??

通過(guò)上圖,我們先了解一下動(dòng)態(tài)化跨端框架在iOS、Android等多個(gè)平臺(tái)實(shí)現(xiàn)跨端的原理:

① 業(yè)務(wù)層:業(yè)務(wù)代碼經(jīng)過(guò)打包后形成business.js發(fā)布到云端,被Harmony、iOS、Android、H5四端共用。

② 虛擬機(jī)層:虛擬機(jī)的核心職責(zé)是運(yùn)行js代碼,這也是跨平臺(tái)框架的基礎(chǔ),在iOS使用系統(tǒng)內(nèi)置的JSCore,在Android使用V8,在瀏覽器使用Webkit,在鴻蒙系統(tǒng)我們依然需要一個(gè)能夠運(yùn)行js代碼的虛擬機(jī)

③ 通訊層:在iOS和Android端使用了json數(shù)據(jù)格式進(jìn)行通訊數(shù)據(jù)的傳輸,在鴻蒙系統(tǒng)也可以使用該方案。

④ 渲染層:使用各個(gè)系統(tǒng)的系統(tǒng)組件進(jìn)行UI元素的渲染。

二、基于方舟虛擬機(jī)的方案探索

1、方舟字節(jié)碼概念

方舟字節(jié)碼(Ark Bytecode),是由方舟編譯器編譯ArkTS/TS/JS生成的,提供給方舟運(yùn)行時(shí)解釋執(zhí)行的二進(jìn)制文件,字節(jié)碼中的主要內(nèi)容是方舟字節(jié)碼指令。

2、在方舟虛擬機(jī)中運(yùn)行JS

方舟虛擬機(jī)不能直接運(yùn)行當(dāng)前在V8中運(yùn)行的js代碼,但是能夠執(zhí)行方舟字節(jié)碼,所以我們可以借助鴻蒙提供的工具將js代碼轉(zhuǎn)化為方舟字節(jié)碼,這樣就能利用鴻蒙系統(tǒng)的方舟虛擬機(jī)執(zhí)行我們的js代碼了。

wKgaomcExx6AWlcsAAMXYRiszCE796.png

??

3、存在的問(wèn)題

3.1、業(yè)務(wù)無(wú)法熱更新

在iOS和Android端,業(yè)務(wù)可以隨時(shí)打包后在云端發(fā)布新的版本,借助于JSCore或者V8就可以直接運(yùn)行新的版本的js,這樣就支持了業(yè)務(wù)的熱更新發(fā)布。但在鴻蒙系統(tǒng)上,華為基于安全考慮,business.abc這樣的字節(jié)碼文件不支持動(dòng)態(tài)下發(fā),需要內(nèi)置到APP中,這樣就失去了業(yè)務(wù)熱更新的能力。

3.2、單線(xiàn)程性能問(wèn)題

wKgZomcExx-AFZMEAAFEixaPi7g779.png

在其他兩端我們是開(kāi)啟了一個(gè)單獨(dú)的JS線(xiàn)程,進(jìn)行business.js文件的執(zhí)行,但是如果我們使用方舟虛擬機(jī)執(zhí)行business.js轉(zhuǎn)換來(lái)的business.abc的時(shí)候,其實(shí)是在方舟虛擬機(jī)的UI主線(xiàn)程運(yùn)行了這個(gè)文件。在其他兩端js文件在JS線(xiàn)程執(zhí)行的時(shí)候,UI渲染和交互是并行不受影響的,但是在方舟虛擬機(jī)單線(xiàn)程下abc文件的執(zhí)行和UI渲染&交互變成了串行,這樣必然會(huì)嚴(yán)重影響頁(yè)面渲染速度和交互的流暢度。

業(yè)務(wù)不能熱更新以及單線(xiàn)程性能不佳等問(wèn)題的存在,我們決定使用另一種方案-V8虛擬機(jī)。

三、基于V8虛擬機(jī)的方案落地

1、在V8虛擬機(jī)中運(yùn)行JS

如果能把V8移植到鴻蒙系統(tǒng)中,我們就可以像其他兩端一樣使用多線(xiàn)程并且能實(shí)現(xiàn)業(yè)務(wù)熱更新等特性,但是V8是一個(gè)近千萬(wàn)級(jí)代碼的龐大倉(cāng)庫(kù),需要掌握CMake、Clang、LLVM、Ninja等一系列交叉編譯知識(shí)(嵌入式范疇),對(duì)于應(yīng)用開(kāi)發(fā)者是一個(gè)巨大的挑戰(zhàn),雖然我們已經(jīng)掌握了V8移植到鴻蒙的技術(shù),但從包大小、穩(wěn)定性、兼容性、維護(hù)成本等維度看,華為廠(chǎng)商內(nèi)置V8是一個(gè)具有長(zhǎng)期收益的重大事項(xiàng),通過(guò)和華為持續(xù)溝通,最終華為將V8內(nèi)置到了操作系統(tǒng),業(yè)界所有類(lèi)動(dòng)態(tài)化框均可直接使用內(nèi)置V8虛擬機(jī)進(jìn)行跨端框架的適配。

wKgaomcExyCAUYkvAALwe2a2Q6o520.png

??

2、高性能核心方案

2.1、多線(xiàn)程架構(gòu)

wKgZomcExyGAdlbyAAbh3BmjFqo448.png

多線(xiàn)程是提高程序性能最直接、最有效的手段之一,借助于鴻蒙系統(tǒng)內(nèi)置的V8虛擬機(jī),我們就能像iOS、Android兩端一樣使用三線(xiàn)程模型完成動(dòng)態(tài)化跨端框架在鴻蒙系統(tǒng)的渲染過(guò)程。

JS線(xiàn)程負(fù)責(zé)將業(yè)務(wù)代碼解析為一顆虛擬Dom樹(shù)、發(fā)出渲染命令、處理業(yè)務(wù)邏輯等,通過(guò)接口定義的橋方法發(fā)送給組件線(xiàn)程進(jìn)行處理。我們以添加一個(gè)點(diǎn)擊按鈕節(jié)點(diǎn)為例,JS線(xiàn)程會(huì)通過(guò)“添加節(jié)點(diǎn)”這個(gè)接口以JSON描述的方式,將信息傳遞給組件線(xiàn)程,組件線(xiàn)程根據(jù)JSON描述將這個(gè)點(diǎn)擊按鈕節(jié)點(diǎn)添加到組件樹(shù)中,然后觸發(fā)UI線(xiàn)程創(chuàng)建系統(tǒng)組件,比如在鴻蒙系統(tǒng)會(huì)創(chuàng)建一個(gè)ArkTS的按鈕組件,在iOS系統(tǒng)會(huì)創(chuàng)建一個(gè)UIButton組件。

UI線(xiàn)程負(fù)責(zé)用戶(hù)頁(yè)面滑動(dòng)、點(diǎn)擊事件等交互行為,當(dāng)發(fā)生比如用戶(hù)點(diǎn)擊事件后,同樣通過(guò)接口定義的橋方法“調(diào)用JS”,將點(diǎn)擊事件傳遞給JS線(xiàn)程進(jìn)行處理,緊接著繼續(xù)處理UI線(xiàn)程的任務(wù),這樣UI線(xiàn)程的交互效率就高了,充分保障了用戶(hù)良好的操作體驗(yàn)。

//JSON描述示例
{
    "type":"btn",
    "value":"按鈕",
    "childrens":[],
    "id":"238346e885ee",
    "style":{
        "width":"66px"
    },
    "attr":{
        "text-color":"#FFFFFFFF"
    },
    "event":{
        "onclick":"myclick()"
    }
}

2.2、JSI技術(shù)引入

通訊橋存在的問(wèn)題

動(dòng)態(tài)化基于三個(gè)線(xiàn)程并行運(yùn)行的方式,使其渲染性能已經(jīng)接近于原生的渲染性能,但是在一些頻繁通訊場(chǎng)景,通訊橋會(huì)“堵塞”,比如當(dāng)業(yè)務(wù)需要監(jiān)聽(tīng)一個(gè)頁(yè)面的滑動(dòng)而改變另外一個(gè)元素背景色的透明度,那么JS線(xiàn)程大部分時(shí)間在處理接收列表滑動(dòng)距離,改變?cè)乇尘吧该鞫冗@個(gè)任務(wù)中,其他任務(wù)的執(zhí)行會(huì)被嚴(yán)重影響。另外JSON數(shù)據(jù)傳輸?shù)男蛄谢头葱蛄谢^(guò)程也會(huì)帶來(lái)很大的線(xiàn)程性能損耗。

wKgaomcExyKAB4JuAAEgwGcEiY0895.png

??

解決方案-JSI

之前使用通訊橋的一個(gè)主要原因就是 C++ 中的函數(shù)沒(méi)辦法完整映射到 JavaScript 中,讓 JavaScript 直接調(diào)用,所以只能選擇以序列化字符串的形式通過(guò)通訊橋傳輸。而JSI做的事情就是將 C++ 中的常用類(lèi)型(函數(shù)、對(duì)象等)一一映射到 JavaScript 中,我們就能在JS中直接調(diào)用C++的函數(shù)和對(duì)象了。因?yàn)橄藰蛲ㄓ崕?lái)的序列化和異步調(diào)用的開(kāi)銷(xiāo),大大提升了線(xiàn)程通訊性能。

wKgZomcExyOAEvxTAAOhQzt_SNw358.png

??

四、進(jìn)一步優(yōu)化的方向

1、減少UI層級(jí)

當(dāng)前基于多線(xiàn)程和JSI的架構(gòu)模式在鴻蒙系統(tǒng)的性能還算不差,但是在鴻蒙系統(tǒng)上同樣一個(gè)業(yè)務(wù)的UI層級(jí)是其他兩端層級(jí)的約2倍。原因在于在鴻蒙系統(tǒng)使用系統(tǒng)組件進(jìn)行遞歸渲染的時(shí)候,需要借助自定義組件進(jìn)行實(shí)現(xiàn),然而和iOS和Android端的命令式組件渲染不同,比如RomaDiv對(duì)應(yīng)iOS就是直接翻譯為UIView即可,在鴻蒙必須增加一個(gè)包裹的容器才是一個(gè)合法的自定義組件,比如Stack容器,這樣每個(gè)組件的層級(jí)就多了一層,層級(jí)過(guò)多會(huì)直接影響渲染性能,在一些復(fù)雜業(yè)務(wù)場(chǎng)景到達(dá)一定層級(jí)后會(huì)造成頁(yè)面掉幀和卡頓。

@Componentexport 
struct RomaDiv 
{ 
    build()
    { 
        Stack(){
         //借助wrapBuilder實(shí)現(xiàn)遞歸 
         ForEach(this.childrenTags, (childrenTag) => 
             { 
                 RomaComponentFactory.builder()//RomaComponentFactory就是對(duì)應(yīng)鴻蒙系統(tǒng)提供的WrappedBuilder 
             }) 
         } 
    } 
}

面對(duì)業(yè)界跨端框架面臨的這個(gè)共性問(wèn)題,鴻蒙系統(tǒng)提供了C語(yǔ)言的命令式接口進(jìn)行組件創(chuàng)建,C組件接口是介于UI組件的Native實(shí)現(xiàn)和ArkTS對(duì)接層之間的一層C接口封裝,它繞過(guò)了狀態(tài)管理對(duì)組件變化、刷新的自動(dòng)化管理,因此具有較好的性能。同時(shí)經(jīng)過(guò)初步驗(yàn)證,接入C-API后,UI層級(jí)能直接和另外兩端保持一致,同時(shí)渲染性能也會(huì)得到大幅提升。

2、降低通訊成本

當(dāng)前JSI在鴻蒙系統(tǒng)的應(yīng)用中通過(guò)JSI打通C++,再通過(guò)NAPI從C++打通ArkTS,跨語(yǔ)言通訊成本高。如果接入了C-API,就避免了C++和ArkTS之間類(lèi)型互相轉(zhuǎn)換和跨語(yǔ)言調(diào)用的開(kāi)銷(xiāo),也能帶來(lái)不少的性能提升。

wKgaomcExySAQ5zbAAF8-yWCJRg654.png

3、JS邏輯下沉到C++

在當(dāng)前架構(gòu)中,JS線(xiàn)程運(yùn)行著V-Dom樹(shù)創(chuàng)建、對(duì)比,樣式&屬性解析等一系列繁重的框架邏輯,如果我們能將這些JS代碼邏輯下沉到C++,框架邏輯運(yùn)行效率會(huì)進(jìn)一步提升。

wKgZomcExyWASs6_AAMyWA3PxfE038.png

總結(jié)

本文講述了如何在鴻蒙系統(tǒng)中實(shí)現(xiàn)“動(dòng)態(tài)化”跨端框架的高性能運(yùn)行。包含探索方舟虛擬機(jī)運(yùn)行方案時(shí)遇到的問(wèn)題,以及基于V8虛擬機(jī)方案的具體提升手段和后續(xù)進(jìn)一步提升的方案。通過(guò)閱讀,你將能夠更好地理解和應(yīng)用這些技術(shù),提高跨端框架的性能,提升C端用戶(hù)體驗(yàn)。

審核編輯 黃宇

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

    關(guān)注

    22

    文章

    2117

    瀏覽量

    74837
  • 虛擬機(jī)
    +關(guān)注

    關(guān)注

    1

    文章

    963

    瀏覽量

    29135
  • 鴻蒙系統(tǒng)
    +關(guān)注

    關(guān)注

    183

    文章

    2641

    瀏覽量

    67797
收藏 人收藏

    評(píng)論

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

    鴻蒙實(shí)踐-JS虛擬機(jī)架構(gòu)實(shí)現(xiàn)

    在Roma方案中,JS虛擬機(jī)是框架的核心,負(fù)責(zé)執(zhí)行動(dòng)態(tài)的JS代碼。在Android平臺(tái)采用了基于V8的J2V8,iOS平臺(tái)則使用了
    的頭像 發(fā)表于 09-30 14:42 ?2901次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>跨</b><b class='flag-5'>端</b>實(shí)踐-JS虛擬機(jī)架構(gòu)實(shí)現(xiàn)

    鴻蒙實(shí)踐-布局方案介紹

    封裝到標(biāo)簽中實(shí)現(xiàn),業(yè)務(wù)只需要針對(duì)標(biāo)簽簡(jiǎn)單地設(shè)置相關(guān)屬性,即可實(shí)現(xiàn)列表類(lèi)布局,大幅提升研發(fā)效率。同時(shí)動(dòng)態(tài)也支持絕對(duì)布局以及控制視圖的顯示和隱藏等功能,使之能勝任絕大多數(shù)業(yè)務(wù)布局場(chǎng)景。 在京東金融App使用動(dòng)態(tài)
    的頭像 發(fā)表于 09-18 10:26 ?1321次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>跨</b><b class='flag-5'>端</b>實(shí)踐-布局<b class='flag-5'>方案</b>介紹

    史無(wú)前例,移植V8虛擬機(jī)到純血鴻蒙系統(tǒng)

    作者:京東科技 于飛躍 一、背景 如圖所示,Roma框架是我們自主研發(fā)的動(dòng)態(tài)平臺(tái)解決方案,已支持iOS,android,web三
    的頭像 發(fā)表于 09-18 10:28 ?1657次閱讀
    史無(wú)前例,移植V8虛擬機(jī)到純血<b class='flag-5'>鴻蒙</b><b class='flag-5'>系統(tǒng)</b>

    AKI語(yǔ)言調(diào)用庫(kù)神助攻C/C++代碼遷移至HarmonyOS NEXT

    /C++代碼快速遷移至HarmonyOS NEXT。憑借卓越的兼容性,AKI已成為廠(chǎng)商與開(kāi)發(fā)者打造鴻蒙原生應(yīng)用過(guò)程中廣泛使用的語(yǔ)言調(diào)用解決方案。 AKI是一款專(zhuān)為鴻蒙原生開(kāi)發(fā)設(shè)計(jì)的
    發(fā)表于 01-02 17:08

    鴻蒙原生頁(yè)面高性能解決方案上線(xiàn)OpenHarmony社區(qū) 助力打造高性能原生應(yīng)用

    隨著HarmonyOS NEXT的正式推出,鴻蒙原生應(yīng)用開(kāi)發(fā)熱度高漲,數(shù)量激增。但在三方應(yīng)用鴻蒙進(jìn)程中,性能問(wèn)題頻出。為此,HarmonyOS NEXT推出了一整套原生頁(yè)面
    發(fā)表于 01-02 18:00

    快手上線(xiàn)鴻蒙應(yīng)用高性能解決方案:數(shù)據(jù)反序列化性能提升90%

    近日,快手在Gitee平臺(tái)上線(xiàn)了鴻蒙應(yīng)用性能優(yōu)化解決方案“QuickTransformer”,該方案針對(duì)鴻蒙應(yīng)用開(kāi)發(fā)中廣泛使用的三方庫(kù)“cl
    發(fā)表于 05-15 10:01

    Kuikly鴻蒙版正式開(kāi)源 —— 揭秘卓越性能適配之旅

    系統(tǒng)化工作,同時(shí)為了達(dá)到高性能、原生渲染、動(dòng)態(tài)等適配目標(biāo),進(jìn)行了持續(xù)的探索和優(yōu)化。其核心適配工作包括:對(duì)接鴻蒙UI
    發(fā)表于 06-04 16:46

    鴻蒙5開(kāi)發(fā)寶藏案例分享---線(xiàn)程性能優(yōu)化指南

    ;>Worker</span>做多線(xiàn)程開(kāi)發(fā)時(shí),總遇到對(duì)象線(xiàn)程卡頓的問(wèn)題,原來(lái)鴻蒙早就提供了解決方案。下面結(jié)合代碼和實(shí)戰(zhàn)案例,帶你徹底玩轉(zhuǎn)性能優(yōu)化! 一、痛點(diǎn):
    發(fā)表于 06-12 17:13

    24位ADC的無(wú)變壓器雙極性輸入和高性能解決方案包括BOM及層圖

    描述此隔離式 3.65mm 薄型參考設(shè)計(jì)采用 24 位 Δ-Σ 模數(shù)轉(zhuǎn)換器 (ADC),可實(shí)現(xiàn)高度集成的雙極性輸入和高性能解決方案。現(xiàn)代模擬輸入模塊在不同的方面都需要高性能,例如以相同的空間大小
    發(fā)表于 10-10 09:16

    如何實(shí)現(xiàn)高性能的射頻測(cè)試解決方案

    如何實(shí)現(xiàn)高性能的射頻測(cè)試解決方案NI軟硬件的關(guān)鍵作用是什么
    發(fā)表于 05-06 07:24

    基于socket API開(kāi)發(fā)一個(gè)高性能高穩(wěn)定性的平臺(tái)MQTT客戶(hù)

    mqttclient一個(gè)高性能、高穩(wěn)定性的平臺(tái)MQTT客戶(hù)一個(gè)高性能、高穩(wěn)定性的平臺(tái)MQTT客戶(hù)
    發(fā)表于 08-09 11:15

    Supermicro(R)利用新處理器和高速互連技術(shù)拓展高性能解決方案

    Supermicro(R)利用即將面市的新處理器和最新的高速互連技術(shù)拓展高性能解決方案Supermicro(R)利用即將面市的新處理器和最新的高速互連技術(shù)拓展高性能解決方案
    發(fā)表于 11-14 19:03 ?1130次閱讀

    CLOUD4Y加速云存儲(chǔ)LSI的高性能解決方案

    電子發(fā)燒友網(wǎng)站提供《CLOUD4Y加速云存儲(chǔ)LSI的高性能解決方案.pdf》資料免費(fèi)下載
    發(fā)表于 08-23 10:35 ?0次下載
    CLOUD4Y加速云存儲(chǔ)LSI的<b class='flag-5'>高性能解決方案</b>

    多頻段白色蝴蝶天線(xiàn):通信領(lǐng)域的高性能解決方案

    深圳安騰納天線(xiàn)|多頻段白色蝴蝶天線(xiàn):通信領(lǐng)域的高性能解決方案
    的頭像 發(fā)表于 02-21 09:07 ?433次閱讀

    快手上線(xiàn)鴻蒙應(yīng)用高性能解決方案

    近日,快手在Gitee平臺(tái)上線(xiàn)了鴻蒙應(yīng)用性能優(yōu)化解決方案“QuickTransformer”,該方案針對(duì)鴻蒙應(yīng)用開(kāi)發(fā)中廣泛使用的三方庫(kù)“cl
    的頭像 發(fā)表于 05-14 09:11 ?374次閱讀
    快手上線(xiàn)<b class='flag-5'>鴻蒙</b>應(yīng)用<b class='flag-5'>高性能解決方案</b>
    主站蜘蛛池模板: 莎车县| 错那县| 无棣县| 山东| 永康市| 襄樊市| 南汇区| 海兴县| 郓城县| 汝州市| 图木舒克市| 建水县| 长寿区| 营口市| 玉林市| 兴宁市| 娱乐| 高安市| 朝阳县| 建瓯市| 青龙| 丽水市| 左权县| 遂平县| 溧水县| 深圳市| 石河子市| 自贡市| 延川县| 胶南市| 泾阳县| 宜兰县| 科技| 中山市| 昂仁县| 封开县| 肃宁县| 万安县| 收藏| 廊坊市| 阿拉善盟|