色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

    文章

    1084

    瀏覽量

    40451
  • 模型
    +關注

    關注

    1

    文章

    3229

    瀏覽量

    48812
  • 線程
    +關注

    關注

    0

    文章

    504

    瀏覽量

    19675

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

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

收藏 人收藏

    評論

    相關推薦

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

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

    ICP元素分析

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

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

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

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

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

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

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

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

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

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

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

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

    AD軟件提供了某一個元素針對其他元素之間的間距規則的設置。
    的頭像 發表于 03-21 09:09 ?1352次閱讀
    請問AD軟件中怎么添加不同<b class='flag-5'>元素</b>之間的間距<b class='flag-5'>規則</b>呢?

    ?紅外材料元素級ZnS高溫性能研究

    作為一種重要的中長波紅外窗口材料,元素級ZnS具有良好的光學性能和力學性能。目前,高超聲速飛行器的發展迫切需要開展元素級ZnS紅外窗口的高溫性能研究。
    的頭像 發表于 01-12 10:02 ?929次閱讀
    ?紅外材料<b class='flag-5'>元素</b>級ZnS高溫性能研究

    四種儀器分析法測定預混飼料中鎘元素的含量

    鎘(Cd)是有毒重金屬元素,毒性較大且無法被生物降解,為慢性蓄積性毒物,過量攝入會對機體的生產、繁殖造成不良影響,甚至會引起器官病變、造成生物體死亡。鎘元素可在食物鏈中傳遞,因此飼料中的鎘元素最終也會影響人體。
    的頭像 發表于 01-10 13:46 ?527次閱讀
    四種儀器分析法測定預混飼料中鎘<b class='flag-5'>元素</b>的含量

    labview怎么查數組中相同元素的個數

    要查找LabVIEW中數組中相同元素的個數,可以使用以下步驟: 創建一個包含要查找的數值的數組。這可以通過手動輸入數組元素或從文件/其他數據源導入數組實現。 使用“For Loop”結構來遍歷數組中
    的頭像 發表于 12-28 16:42 ?3494次閱讀
    主站蜘蛛池模板: 精品视频在线一区| 少妇一夜未归暴露妓女身份| 国产 在线 亚洲 欧美 动漫| 亚洲第一免费播放区| 美女脱18以下禁止看免费| 国产欧美一区二区精品性色tv| 在线va无卡无码高清| 琪琪婷婷五月色综合久久| 久久黄色免费| 国产精品无码无卡毛片不卡视| 99国产精品欲AV蜜桃臀麻豆| 亚洲国产中文字幕新在线| 日本夜爽爽一区二区三区| 久久亚洲精品中文字幕| 娇小8一12xxxx第一次| 风流少妇BBWBBW69视频| HEYZO无码中文字幕人妻 | 果冻传媒在线观看完整版免费 | 文中字幕一区二区三区视频播放| 免费 高清 中文在线观看| 久久成人国产精品一区二区| 国产睡熟迷奷系列精品| 国产亚洲精品久久久久小| 国产精品亚洲欧美一区麻豆| 国产精品久久国产三级国不卡顿| 成人在线视频免费| 国产成人拍精品视频网| 国产国拍精品AV在线观看| 国产伦精品一区二区免费| 国产亚洲精品久久久久久禁果TV | 久久精品亚洲热综合一本| 久久精品视频15人人爱在线直播| 久久精品热99看二| 麻豆狠色伊人亚洲综合网站| 欧美性xxx极品| 手机在线亚洲日韩国产| 亚洲福利视频导航| 两个奶头被吃得又翘又痛| 国产精品嫩草影院| 国精产品一区一区三区有| 久久在精品线影院|