在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

Text元素、Image元素、模型視圖和視覺效果優化規則和推薦實踐

倩倩 ? 來源:嵌入式小生 ? 作者:嵌入式小生 ? 2022-09-05 11:12 ? 次閱讀


開篇

性能優化在行業里永遠是一個常談的話題,該話題里的內容無法用準則來描述啦,而更多的是建議和規則。本文多數內容、觀點和建議參考于Qt官方資料并結合自己的實際QML使用習慣總結而成。優化規則并不是“黃金規則”,更不是“金標準”。對于QML應用開發來說,將這些規則根據具體應用場景能合理運用即可啦。

本文內容主要涉及到:Text元素、Image元素、模型視圖和視覺效果四個方面的一些優化規則和推薦實踐。

性能優化 | Text元素

計算文本的布局會是一個緩慢的操作。所以,在實際開發中盡可能優先考慮使用明文格式,而不是StyledText,這可以減少布局引擎的工作量。如果不能使用明文(例如:需要嵌入圖像,或使用標記來指定具有特定格式(粗體、斜體等)的字符范圍),那么才考慮使用StyledText

應該只在文本可能是StyledText的情況下使用AutoText,因為這種模式會導致很高的解析成本。除此之外,還不應該使用RichText模式,因為StyledText幾乎提供了其所有的特性。

性能優化 | Image元素

在任何軟件的用戶界面中,圖片都是重要組成部分。但是一般加載圖片所需的時間、消耗的內存數量和使用方式,都會影響應用程序的性能,在本小結中,描述在實際qml應用開發中,在使用圖片時關于性能的幾條優化點。

異步加載圖片

圖片通常非常大,所以最佳的做法是確保加載圖片不會阻塞UI線程。將Image元素的asynchronous屬性設置為true,用于允許從本地文件系統異步加載圖片(注:遠程圖片總是異步加載的)。

注:當asynchronous屬性設置為true時,圖片元素將在低優先級的工作線程中加載。

顯式設置圖片源的屬性

如果在應用程序中加載了一個大尺寸的圖片,但是卻在一個小尺寸的元素中顯示它,因此我們應該設置圖片的sourceSize屬性為被呈現的元素的大小,以確保在內存中保存的是小尺寸的圖片,而不是大尺寸的圖片。

注:更改sourceSize會導致圖像重新加載。

避免運行時拼接

通過在應用程序中提供預合成的圖片資源(例如,提供帶有陰影效果的元素),可以避免在運行時進行圖片合成。

避免平滑圖片

對于Image類型,image.smotth用于設置圖片的平滑參數,我們在需要時才進行平滑操作。因為在一些硬件上進行圖片平滑速度較慢,而且如果圖像以原圖大小顯示,則沒有視覺效果,因此也沒有意義且影響性能。

避免多次繪制

避免在一個區域多次繪制。在設計qml文件時,使用Item作為根元素,而不要使用Rectangle,以避免多次繪制背景。

性能優化 | 使用Anchor定位元素

使用錨定位比使用綁定更有效率。例如下列代碼,

Rectangle{
id:rect1
x:20
width:200;height:200
}
Rectangle{
id:rect2
x:rect1.x
y:rect1.y+rect1.height
width:rect1.width-20
height:200
}

在上述代碼中,是使用使用綁定來定位rect2相對于rect1的位置。從性能角度來看,更高效的做法是:

Rectangle{
id:rect1
x:20
width:200;height:200
}
Rectangle{
id:rect2
height:200
anchors.left:rect1.left
anchors.top:rect1.bottom
anchors.right:rect1.right
anchors.rightMargin:20
}

使用綁定定位(通過將綁定表達式賦值給可視對象的x、y、widht和height屬性)相對較慢,但是這種方式具有靈活性的優點。

如果布局不是動態的,指定布局最有效的方法是靜態初始化x, y, width和height屬性。Item坐標總是相對于它們的父節點,所以如果想要與父節點的(0,0)坐標保持固定的偏移,就不能使用anchor。如下面的例子,子矩形對象位于相同的位置,但錨代碼顯示的效率不如通過靜態初始化使用固定定位的代碼:

Rectangle{
width:60
height:60
Rectangle{
id:fixedPositioning
x:20
y:20
width:20
height:20
}
Rectangle{
id:anchorPositioning
anchors.fill:parent
anchors.margins:20
}
}

性能優化 | 模型和視圖

絕大多數的應用程序至少包含一個向視圖提供數據的模型。但是如果數據量較大,將會影響性能,所以我們需要知道在實際開發中如何優化性能,本小節提供幾條方法:

自定義C++模型

用C++編寫我們的自定義模型,以便在QML中與視圖一起使用。此類模型的最佳實現將在很大程度上取決于實際的應用場景,以下是幾點準則:

(1)盡可能保持異步。

(2)保證所有的處理都在一個(低優先級)的工作線程中進行。

(3)盡可能在后臺批處理操作,以減少I/O和IPC。

注意:建議使用低優先級的工作線程,以將GUI線程被饑餓的風險降到最低(因為這可能會極大程度上影響GUI體驗效果)。除此之外,同步和鎖機制可能是導致性能變慢的一個重要原因,因此應避免不必要的鎖定。

ListModel QML類型

在QML中,優先使用ListModel類型,用于向ListView視圖提供數據。該類型足以滿足大多數的使用場景了,只要使用正確,ListMode性能也相對較好。在使用中,應注意以下兩點:

(1)在工作線程中填充

JavaScript中,ListModel元素可以被填充到一個(低優先級)的工作線程中。我們必須在WorkerScript中顯式調用ListModel上的sync(),以便將更改同步到主線程。

注,使用WorkerScript元素將導致創建一個單獨的JavaScript引擎(因為JavaScript引擎是屬于單個線程),這一點將增加內存使用量。然而,多個WorkerScript元素將使用同一個工作線程,因此一旦應用程序已經使用了一個WorkerScript元素,那么使用第二個或第三個WorkerScript元素對內存的影響就可以忽略不計了。

(2)不要使用動態元素

Qt Quick 2 ListModel中的性能優化主要來自:假定了對給定模型中單個元素中的類型不會更改,因此緩存性能將顯著提高。如果類型可以從一個元素到另一個元素的動態變化,則不滿足Qt Quick 2對ListModel的優化,而且模型的性能將會差一個數量級。

因此,在默認情況下動態類型是禁用的。必須專門設置模型的dynamicRoles屬性,才能啟用動態類型(并承受隨之而來的性能下降)。因此,如果可以重新設計應用程序來避免使用動態類型,則推薦不要使用動態類型而是去重新設計程序。

視圖(View)

視圖代理應盡可能簡單。在代理中只放置需要QML來顯示的必要信息,不是立即需要的附加信息和操作(例如:如果在單擊時顯示更多信息)應該在需要的時候才創建(即:延遲創建

在設計視圖代理時需要注意以下幾點:

(1)代理中的元素越少,在視圖中創建的速度就越快,因此視圖滾動的速度就越快,效果越好。

(2)減少代理中綁定的數量。推薦在代理中使用Anchor而不是綁定來進行相對定位。

(3)避免在代理中使用ShaderEffect元素。

(4)不要在代理中啟動Clipping。

可以設置一個視圖的cacheBuffer屬性來允許異步創建和在可見區域外緩存代理。對于不簡單且不太可能在單幀內創建的視圖代理,推薦使用cacheBuffer

注:cacheBuffer是在內存中保留額外的代理。因此,利用cacheBuffer獲得的值必須與內存使用相平衡。應使用基準測試來找到用例的最佳值,因為使用cacheBuffer會增加內存壓力,在極端情況下,會導致視圖滾動幀率降低,出現卡頓現象!

性能優化 | 視覺效果

Qt Quick 2允許開發人員和設計人員創建高端的用戶界面。因此流動性、動態轉換和視覺效果等特性可以在應用程序中發揮巨大作用,但在QML中使用這些特性時必須謹慎,因為可能會影響性能。

動畫

通常,動畫化一個Item的屬性會導致引用該屬性的所有綁定都被重新計算。在屬性動畫過程中的屬性綁定被重新計算在實際開發中是必須的;但在一些情況下,可以考慮最好在執行動畫之前禁用綁定,然后在動畫完成后重新分配綁定。

避免在動畫期間運行JavaScript。例如:避免為x屬性的動畫運行復雜的JavaScript表達式。

在使用腳本動畫時應注意,因為這些動畫是在主線程中運行的(因此如果它們需要很長時間才能完成,就可能會導致一些動畫幀缺失)。

粒子效果

在Qt Quick Particles模塊中允許粒子效果無縫集成到用戶界面中。每個平臺都有不同的圖形硬件功能,Particles模塊無法將參數限制為硬件能夠很好支持的情況。

如果渲染的粒子越多(它們越大),圖形硬件就需要越快,才能以60幀/秒的速度渲染,更快的CPU速度才能渲染更多的粒子效果。

因此,在目標平臺上測試所有的粒子效果就變得很重要了,用于評估在60fps下渲染的粒子數量和大小。

審核編輯 :李倩


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

    關注

    2

    文章

    1089

    瀏覽量

    40545
  • 模型
    +關注

    關注

    1

    文章

    3298

    瀏覽量

    49116
  • 線程
    +關注

    關注

    0

    文章

    505

    瀏覽量

    19733

原文標題:QML性能優化 | 常見界面元素優化

文章出處:【微信號:嵌入式小生,微信公眾號:嵌入式小生】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    借助谷歌Gemini和Imagen模型生成高質量圖像

    以獲得卓越的視覺效果。這個過程并不止于此;一旦圖像生成,Imagen 2 可以進一步優化以滿足特定需求,從而創建一個強大的工作流程,用于制作頂級視覺內容。
    的頭像 發表于 01-03 10:38 ?390次閱讀
    借助谷歌Gemini和Imagen<b class='flag-5'>模型</b>生成高質量圖像

    X熒光元素能譜分析與掃描電鏡能譜元素的共性及差異

    X熒光元素分析原理是青年科學家布拉格(獲諾貝爾物理學獎時僅25歲)創建的。現以創想儀器的第二代EDX-9000型X射線熒光元素分析儀為例,介紹其工作原理與技術性能。 工作原理:高速電子轟擊靶材(通常
    的頭像 發表于 12-21 16:40 ?251次閱讀
    X熒光<b class='flag-5'>元素</b>能譜分析與掃描電鏡能譜<b class='flag-5'>元素</b>的共性及差異

    錫鉛焊料中的金屬元素分析

    錫鉛焊料:電子制造中的關鍵材料在電子和電氣設備的制造過程中,錫鉛焊料因其出色的導電性、導熱性和抗腐蝕性而成為連接元件的首選材料。為了確保焊料的質量和性能,金鑒實驗室提供專業的金屬元素分析測試服務
    的頭像 發表于 12-14 19:40 ?317次閱讀
    錫鉛焊料中的金屬<b class='flag-5'>元素</b>分析

    ICP元素分析

    叫做ICP-OES。一、工作原理待測試樣經噴霧器形成氣溶膠進入石英炬管等離子體中心通道中,經光源激發以后所輻射的譜線,經入射狹縫到色散系統光柵,分光后的待測元素
    的頭像 發表于 11-18 17:46 ?338次閱讀
    ICP<b class='flag-5'>元素</b>分析

    《DNK210使用指南 -CanMV版 V1.0》第三十三章 image元素繪制實驗

    第三十三章 image元素繪制實驗 在前面的章節中已經陸續提到了image模塊的一些基本使用,從本章開始將通過幾個章節詳細地介紹image模塊的使用,本章將講解
    發表于 11-04 14:22

    基于LIBS的馬鈴薯中鉻元素定量分析方法研究

    樣品,并調整實驗參數采集馬鈴薯光譜數據;然后針對光譜數據中的噪聲和基線漂移的問題對光譜數據進行前期處理;最后采用絕對強度法定量分析Cr元素,同時,計算模型評價指標以評估定量性能。通過實驗和數據分析,驗證LIBS技術的可行性。 二、
    的頭像 發表于 10-30 18:11 ?240次閱讀
    基于LIBS的馬鈴薯中鉻<b class='flag-5'>元素</b>定量分析方法研究

    基于LIBS的土壤中銅元素和鉛元素定量分析

    利用激光誘導擊穿光譜技術對摻雜Cu、Pb元素的土壤樣品進行定量分析,尋找最優實驗條件。實驗使用直接定標法和內標法對元素特征譜線進行擬合,根據計算相關系數及檢出限選擇合適的數據處理方法。
    的頭像 發表于 08-27 14:54 ?340次閱讀
    基于LIBS的土壤中銅<b class='flag-5'>元素</b>和鉛<b class='flag-5'>元素</b>定量分析

    TINA-TI導入spice模型失敗,提示語法元素錯誤是哪里出了問題?

    在使用TINA-TI 導入器件的Spice模型時,提示錯誤語法元素錯誤,不能導入器件,其spice內容如下:煩請知道,非常感謝! * DRB501VM-40 D model * PKG: UMD2
    發表于 08-09 07:51

    LED機械矩陣屏:打造獨特視覺效果視覺盛宴

    一、引言 隨著科技的不斷發展,LED顯示技術也在不斷更新和升級。其中,LED機械矩陣屏憑借其獨特的視覺效果和靈活的應用場景,成為了新一代的顯示設備。本文將為您介紹LED機械矩陣屏的相關知識,幫助
    的頭像 發表于 07-29 09:30 ?508次閱讀

    【大語言模型:原理與工程實踐】探索《大語言模型原理與工程實踐》2.0

    《大語言模型“原理與工程實踐”》是關于大語言模型內在機理和應用實踐的一次深入探索。作者不僅深入討論了理論,還提供了豐富的實踐案例,幫助讀者理
    發表于 05-07 10:30

    焊錫膏中的金屬元素有什么作用?

    焊錫膏是伴隨著SMT應運而生的一種新型焊接材料,也是是一種由焊料粉末、助焊劑和其他添加劑混合而成的復雜系統,一般根據用途的不同,焊錫膏中也會加入不同的金屬元素,那么不同的金屬元素在焊錫膏中有什么作用
    的頭像 發表于 04-23 16:36 ?643次閱讀
    焊錫膏中的金屬<b class='flag-5'>元素</b>有什么作用?

    日產2025款逍客中期改款車型上市,內外全面升級

    首先,全新前臉設計引人注目,尺寸巨大的進氣格柵采用亮黑色“逗號形元素”,靈感源自“古代日本盔甲的鱗片”,搭配全新下保險杠,視覺效果更佳。
    的頭像 發表于 04-17 15:44 ?1171次閱讀

    揭秘第96屆奧斯卡最佳視覺效果獎提名影片背后的“魔法”

    第 96 屆奧斯卡最佳視覺效果獎提名影片證明了技術的驚人進步正在不斷打破電影發展的桎梏。
    的頭像 發表于 04-10 10:16 ?451次閱讀

    隨機抽取SV數組中的一個元素方法實現

    如果想從一個關聯數組中隨機選取一個元素,需要逐個訪問它之前的元素,原因是沒辦法能夠直接訪問到第N個元素。上面的程序示范了如何從一個以整數值作為索引**的關聯數組中隨機選取一個元素
    的頭像 發表于 03-21 10:11 ?1099次閱讀
    隨機抽取SV數組中的一個<b class='flag-5'>元素</b>方法實現

    請問AD軟件中怎么添加不同元素之間的間距規則呢?

    AD軟件提供了某一個元素針對其他元素之間的間距規則的設置。
    的頭像 發表于 03-21 09:09 ?1420次閱讀
    請問AD軟件中怎么添加不同<b class='flag-5'>元素</b>之間的間距<b class='flag-5'>規則</b>呢?
    主站蜘蛛池模板: 女性私密部位扒开的视频 | 国产精品超清大白屁股 | 久久狠狠第一麻豆婷婷天天 | 日本a级片在线观看 | 啪啪免费网站视频观看 | 免费国产黄网站在线观看视频 | 亚洲人成在线精品不卡网 | 免费的很黄很色的床小视频 | 看天堂 | 亚洲精品在线视频观看 | 最新亚洲一区二区三区四区 | 99久久精品免费观看国产 | 最近免费hd | 狠狠色丁香婷婷综合小时婷婷 | 丁香5月婷婷 | 六月天婷婷 | 午夜视频免费在线观看 | 夜夜橹橹网站夜夜橹橹 | 成人亚洲欧美在线电影www色 | 91夜夜人人揉人人捏人人添 | 免费观看午夜在线欧差毛片 | 久久久久久国产精品免费 | 51vv福利视频在线精品 | 女人张开腿男人猛桶视频 | 国产精品久久久久久久久齐齐 | 男男h啪肉np文总受 男男h全肉耽污 | 亚洲性久久久影院 | 亚洲韩国欧美一区二区三区 | 午夜逼逼 | 97午夜理伦片在线影院 | 男女做性无遮挡免费视频 | 欧美性色xo影院69 | 日本三级特黄 | 国产精选经典三级小泽玛利亚 | 神马午夜98 | 国精视频一区二区视频 | 推倒都市极品贵妇 | 亚洲91在线视频 | 最近高清免费观看视频 | 亚洲欧洲无码一区二区三区 | 日本偷偷操 |