鴻蒙學(xué)習(xí)筆記十七:鴻蒙項(xiàng)目性能優(yōu)化

最近在對鴻蒙項(xiàng)目進(jìn)行性能優(yōu)化,主要調(diào)優(yōu)以下幾點(diǎn)

0:官方參考文檔如下:

https://developer.huawei.com/consumer/cn/doc/best-practices-V5/bpta-performance-V5

https://developer.huawei.com/consumer/cn/doc/best-practices-V5/bpta-scenario-performance-optimization-V5

1:冗余嵌套

由于在開發(fā)之初的種種原因警儒,導(dǎo)致項(xiàng)目很多地方出現(xiàn)冗余的嵌套(示例如下),冗余嵌套會導(dǎo)致頁面繪制變慢置逻、內(nèi)存占用增加等問題


image.png
2:使用Builder替代自定義組件

當(dāng)自定義組件不涉及到狀態(tài)變量和自定義生命周期時(shí)玩讳,可以優(yōu)先使用@Builder替換自定義組件,提升性能刮萌。這里需要注意Builder替代自定義組件之后頁面的刷新問題驮配,因?yàn)橛袝r(shí)候數(shù)據(jù)傳的是正確的,但是UI沒刷新,具體原因如下壮锻,參照按引用傳遞參數(shù)部分:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-builder-V5#%E6%8C%89%E5%BC%95%E7%94%A8%E4%BC%A0%E9%80%92%E5%8F%82%E6%95%B0

3:自定義組件盡量不要外掛屬性琐旁,減少自定義組件產(chǎn)生多余節(jié)點(diǎn);自定義組件外掛屬性之后猜绣,系統(tǒng)會為其創(chuàng)建一個(gè)默認(rèn)的節(jié)點(diǎn)灰殴,這就產(chǎn)生了額外的開銷

錯(cuò)誤示例:


image.png

正確示例:


image.png
4:使用lint檢測自己的模塊,處理暴露出來的問題掰邢,這里既包含冗余嵌套牺陶,也包含一部分寫法不規(guī)范的問題,可以按模塊檢測并修改

具體方法:在項(xiàng)目中選中具體的文件夾或者文件尸变,右擊:


image.png
5:長列表內(nèi)存占用

對于長列表使用LazyForEach進(jìn)行渲染义图,并在卡片中使用@Reusable注解,這里需要注意一點(diǎn)召烂,長列表進(jìn)行數(shù)據(jù)處理時(shí)我們需要復(fù)寫官方的IDataSource類碱工,在分頁加載數(shù)據(jù)時(shí)要使用notifyDataAdd,而非notifyDataReload奏夫,notifyDataReload會重繪整個(gè)列表怕篷,導(dǎo)致內(nèi)存抖動(dòng)及內(nèi)存占用量飆升

正確示例:

WaterFlow({ scroller: this.scroller }) {
        LazyForEach(this.commonDataSource, (mCommodityData: CommodityItemData, itemGeneratorIndex: number) => {
          FlowItem() {}
        },
          (item: CommodityItemData) => `today_${item.commodityId}`) //這里的參數(shù)不建議缺省,同時(shí)不能在加載時(shí)動(dòng)態(tài)設(shè)置酗昼,必須在數(shù)據(jù)源中設(shè)置
      }

錯(cuò)誤示例廊谓,這里不能使用時(shí)間戳,會導(dǎo)致條目不能復(fù)用

WaterFlow({ scroller: this.scroller }) {
        LazyForEach(this.commonDataSource, (mCommodityData: CommodityItemData, itemGeneratorIndex: number) => {
          FlowItem() {}
        },
          (item: CommodityItemData) => systemDateTime.getCurrentTime() +`${item.commodityId}`) //這里的參數(shù)不建議缺省麻削,同時(shí)不能在加載時(shí)動(dòng)態(tài)設(shè)置蒸痹,必須在數(shù)據(jù)源中設(shè)置
      }
6:使用@Reusable注解和aboutToReuse()方法時(shí)的注意點(diǎn):

http://www.reibang.com/p/752557704045

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市呛哟,隨后出現(xiàn)的幾起案子叠荠,更是在濱河造成了極大的恐慌,老刑警劉巖扫责,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件榛鼎,死亡現(xiàn)場離奇詭異,居然都是意外死亡鳖孤,警方通過查閱死者的電腦和手機(jī)者娱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來苏揣,“玉大人黄鳍,你說我怎么就攤上這事⊥茸迹” “怎么了际起?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵拾碌,是天一觀的道長。 經(jīng)常有香客問我街望,道長校翔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任灾前,我火速辦了婚禮防症,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘哎甲。我一直安慰自己蔫敲,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布炭玫。 她就那樣靜靜地躺著奈嘿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吞加。 梳的紋絲不亂的頭發(fā)上裙犹,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機(jī)與錄音衔憨,去河邊找鬼叶圃。 笑死,一個(gè)胖子當(dāng)著我的面吹牛践图,可吹牛的內(nèi)容都是我干的掺冠。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼码党,長吁一口氣:“原來是場噩夢啊……” “哼德崭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起揖盘,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤接癌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后扣讼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缨叫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年椭符,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片耻姥。...
    茶點(diǎn)故事閱讀 38,137評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡销钝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出琐簇,到底是詐尸還是另有隱情蒸健,我是刑警寧澤座享,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站似忧,受9級特大地震影響渣叛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜盯捌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一淳衙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧饺著,春花似錦箫攀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至渡嚣,卻和暖如春梢睛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背严拒。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工扬绪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人裤唠。 一個(gè)月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓挤牛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親种蘸。 傳聞我的和親對象是個(gè)殘疾皇子墓赴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 前言導(dǎo)讀 各位同學(xué)大家,有段時(shí)間沒有跟大家見面了航瞭,因?yàn)樽罱恢痹诟馒櫭傻哪莻€(gè)實(shí)戰(zhàn)課程所以就沒有去更新文章實(shí)在是不...
    xq9527閱讀 121評論 0 0
  • 1. 布局性能優(yōu)化 隱藏顯示組件使用visible诫硕,減少if使用 給組件固定寬高,減少計(jì)算 精簡節(jié)點(diǎn)數(shù) 推薦使用布...
    簡單Timor閱讀 69評論 0 1
  • 基于ArkTS的聲明式開發(fā)范式的方舟開發(fā)框架是一套開發(fā)極簡、高性能滨彻、支持跨設(shè)備的UI開發(fā)框架藕届,提供了構(gòu)建應(yīng)用UI所...
    圓夢人生閱讀 323評論 0 0
  • 簡介 在自學(xué)鴻蒙開發(fā)的過程中,記錄下自己遇到的問題以及解決辦法亭饵,持續(xù)更新P菖肌!辜羊! 環(huán)境信息: 系統(tǒng):Mac 13.5...
    sy隨緣閱讀 427評論 6 2
  • 最近在開視頻時(shí), 經(jīng)程ざ担看到鴻蒙純血相關(guān)標(biāo)題, 就搜索了下鴻蒙教學(xué), 隨便找一個(gè)免費(fèi)視頻課程, 就開始了學(xué)習(xí) 一開始...
    呼啦呼啦的圈閱讀 304評論 0 1