99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

Text元素、Image元素、模型視圖和視覺(jué)效果優(yōu)化規(guī)則和推薦實(shí)踐

倩倩 ? 來(lái)源:嵌入式小生 ? 作者:嵌入式小生 ? 2022-09-05 11:12 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群


開篇

性能優(yōu)化在行業(yè)里永遠(yuǎn)是一個(gè)常談的話題,該話題里的內(nèi)容無(wú)法用準(zhǔn)則來(lái)描述啦,而更多的是建議和規(guī)則。本文多數(shù)內(nèi)容、觀點(diǎn)和建議參考于Qt官方資料并結(jié)合自己的實(shí)際QML使用習(xí)慣總結(jié)而成。優(yōu)化規(guī)則并不是“黃金規(guī)則”,更不是“金標(biāo)準(zhǔn)”。對(duì)于QML應(yīng)用開發(fā)來(lái)說(shuō),將這些規(guī)則根據(jù)具體應(yīng)用場(chǎng)景能合理運(yùn)用即可啦。

本文內(nèi)容主要涉及到:Text元素、Image元素、模型視圖和視覺(jué)效果四個(gè)方面的一些優(yōu)化規(guī)則和推薦實(shí)踐。

性能優(yōu)化 | Text元素

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

應(yīng)該只在文本可能是StyledText的情況下使用AutoText,因?yàn)檫@種模式會(huì)導(dǎo)致很高的解析成本。除此之外,還不應(yīng)該使用RichText模式,因?yàn)镾tyledText幾乎提供了其所有的特性。

性能優(yōu)化 | Image元素

在任何軟件的用戶界面中,圖片都是重要組成部分。但是一般加載圖片所需的時(shí)間、消耗的內(nèi)存數(shù)量和使用方式,都會(huì)影響應(yīng)用程序的性能,在本小結(jié)中,描述在實(shí)際qml應(yīng)用開發(fā)中,在使用圖片時(shí)關(guān)于性能的幾條優(yōu)化點(diǎn)。

異步加載圖片

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

注:當(dāng)asynchronous屬性設(shè)置為true時(shí),圖片元素將在低優(yōu)先級(jí)的工作線程中加載。

顯式設(shè)置圖片源的屬性

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

注:更改sourceSize會(huì)導(dǎo)致圖像重新加載。

避免運(yùn)行時(shí)拼接

通過(guò)在應(yīng)用程序中提供預(yù)合成的圖片資源(例如,提供帶有陰影效果的元素),可以避免在運(yùn)行時(shí)進(jìn)行圖片合成。

避免平滑圖片

對(duì)于Image類型,image.smotth用于設(shè)置圖片的平滑參數(shù),我們?cè)谛枰獣r(shí)才進(jìn)行平滑操作。因?yàn)樵谝恍┯布线M(jìn)行圖片平滑速度較慢,而且如果圖像以原圖大小顯示,則沒(méi)有視覺(jué)效果,因此也沒(méi)有意義且影響性能。

避免多次繪制

避免在一個(gè)區(qū)域多次繪制。在設(shè)計(jì)qml文件時(shí),使用Item作為根元素,而不要使用Rectangle,以避免多次繪制背景。

性能優(yōu)化 | 使用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
}

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

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
}

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

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

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
}
}

性能優(yōu)化 | 模型和視圖

絕大多數(shù)的應(yīng)用程序至少包含一個(gè)向視圖提供數(shù)據(jù)的模型。但是如果數(shù)據(jù)量較大,將會(huì)影響性能,所以我們需要知道在實(shí)際開發(fā)中如何優(yōu)化性能,本小節(jié)提供幾條方法:

自定義C++模型

用C++編寫我們的自定義模型,以便在QML中與視圖一起使用。此類模型的最佳實(shí)現(xiàn)將在很大程度上取決于實(shí)際的應(yīng)用場(chǎng)景,以下是幾點(diǎn)準(zhǔn)則:

(1)盡可能保持異步。

(2)保證所有的處理都在一個(gè)(低優(yōu)先級(jí))的工作線程中進(jìn)行。

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

注意:建議使用低優(yōu)先級(jí)的工作線程,以將GUI線程被饑餓的風(fēng)險(xiǎn)降到最低(因?yàn)檫@可能會(huì)極大程度上影響GUI體驗(yàn)效果)。除此之外,同步和鎖機(jī)制可能是導(dǎo)致性能變慢的一個(gè)重要原因,因此應(yīng)避免不必要的鎖定。

ListModel QML類型

在QML中,優(yōu)先使用ListModel類型,用于向ListView視圖提供數(shù)據(jù)。該類型足以滿足大多數(shù)的使用場(chǎng)景了,只要使用正確,ListMode性能也相對(duì)較好。在使用中,應(yīng)注意以下兩點(diǎn):

(1)在工作線程中填充

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

注,使用WorkerScript元素將導(dǎo)致創(chuàng)建一個(gè)單獨(dú)的JavaScript引擎(因?yàn)镴avaScript引擎是屬于單個(gè)線程),這一點(diǎn)將增加內(nèi)存使用量。然而,多個(gè)WorkerScript元素將使用同一個(gè)工作線程,因此一旦應(yīng)用程序已經(jīng)使用了一個(gè)WorkerScript元素,那么使用第二個(gè)或第三個(gè)WorkerScript元素對(duì)內(nèi)存的影響就可以忽略不計(jì)了。

(2)不要使用動(dòng)態(tài)元素

Qt Quick 2 ListModel中的性能優(yōu)化主要來(lái)自:假定了對(duì)給定模型中單個(gè)元素中的類型不會(huì)更改,因此緩存性能將顯著提高。如果類型可以從一個(gè)元素到另一個(gè)元素的動(dòng)態(tài)變化,則不滿足Qt Quick 2對(duì)ListModel的優(yōu)化,而且模型的性能將會(huì)差一個(gè)數(shù)量級(jí)。

因此,在默認(rèn)情況下動(dòng)態(tài)類型是禁用的。必須專門設(shè)置模型的dynamicRoles屬性,才能啟用動(dòng)態(tài)類型(并承受隨之而來(lái)的性能下降)。因此,如果可以重新設(shè)計(jì)應(yīng)用程序來(lái)避免使用動(dòng)態(tài)類型,則推薦不要使用動(dòng)態(tài)類型而是去重新設(shè)計(jì)程序。

視圖(View)

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

在設(shè)計(jì)視圖代理時(shí)需要注意以下幾點(diǎn):

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

(2)減少代理中綁定的數(shù)量。推薦在代理中使用Anchor而不是綁定來(lái)進(jìn)行相對(duì)定位。

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

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

可以設(shè)置一個(gè)視圖的cacheBuffer屬性來(lái)允許異步創(chuàng)建和在可見(jiàn)區(qū)域外緩存代理。對(duì)于不簡(jiǎn)單且不太可能在單幀內(nèi)創(chuàng)建的視圖代理,推薦使用cacheBuffer

注:cacheBuffer是在內(nèi)存中保留額外的代理。因此,利用cacheBuffer獲得的值必須與內(nèi)存使用相平衡。應(yīng)使用基準(zhǔn)測(cè)試來(lái)找到用例的最佳值,因?yàn)槭褂胏acheBuffer會(huì)增加內(nèi)存壓力,在極端情況下,會(huì)導(dǎo)致視圖滾動(dòng)幀率降低,出現(xiàn)卡頓現(xiàn)象!

性能優(yōu)化 | 視覺(jué)效果

Qt Quick 2允許開發(fā)人員和設(shè)計(jì)人員創(chuàng)建高端的用戶界面。因此流動(dòng)性、動(dòng)態(tài)轉(zhuǎn)換和視覺(jué)效果等特性可以在應(yīng)用程序中發(fā)揮巨大作用,但在QML中使用這些特性時(shí)必須謹(jǐn)慎,因?yàn)榭赡軙?huì)影響性能。

動(dòng)畫

通常,動(dòng)畫化一個(gè)Item的屬性會(huì)導(dǎo)致引用該屬性的所有綁定都被重新計(jì)算。在屬性動(dòng)畫過(guò)程中的屬性綁定被重新計(jì)算在實(shí)際開發(fā)中是必須的;但在一些情況下,可以考慮最好在執(zhí)行動(dòng)畫之前禁用綁定,然后在動(dòng)畫完成后重新分配綁定。

避免在動(dòng)畫期間運(yùn)行JavaScript。例如:避免為x屬性的動(dòng)畫運(yùn)行復(fù)雜的JavaScript表達(dá)式。

在使用腳本動(dòng)畫時(shí)應(yīng)注意,因?yàn)檫@些動(dòng)畫是在主線程中運(yùn)行的(因此如果它們需要很長(zhǎng)時(shí)間才能完成,就可能會(huì)導(dǎo)致一些動(dòng)畫幀缺失)。

粒子效果

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

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

因此,在目標(biāo)平臺(tái)上測(cè)試所有的粒子效果就變得很重要了,用于評(píng)估在60fps下渲染的粒子數(shù)量和大小。

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • 圖像
    +關(guān)注

    關(guān)注

    2

    文章

    1094

    瀏覽量

    41256
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3520

    瀏覽量

    50421
  • 線程
    +關(guān)注

    關(guān)注

    0

    文章

    508

    瀏覽量

    20212

原文標(biāo)題:QML性能優(yōu)化 | 常見(jiàn)界面元素優(yōu)化

文章出處:【微信號(hào):嵌入式小生,微信公眾號(hào):嵌入式小生】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    HarmonyOS NEXT應(yīng)用元服務(wù)布局優(yōu)化精簡(jiǎn)節(jié)點(diǎn)數(shù)

    去掉ImageText外層的Row來(lái)減少層級(jí),如果視圖更加復(fù)雜,布局在渲染時(shí),會(huì)產(chǎn)生沒(méi)有必要的計(jì)算。 Row() { Image() Text
    發(fā)表于 06-26 10:21

    HarmonyOS NEXT應(yīng)用元服務(wù)布局優(yōu)化精簡(jiǎn)節(jié)點(diǎn)數(shù)

    去掉ImageText外層的Row來(lái)減少層級(jí),如果視圖更加復(fù)雜,布局在渲染時(shí),會(huì)產(chǎn)生沒(méi)有必要的計(jì)算。 Row() { Image() Text
    發(fā)表于 06-26 10:21

    HarmonyOS NEXT應(yīng)用元服務(wù)布局優(yōu)化合理使用渲染控制語(yǔ)法

    控制元素顯示與隱藏,提高性能。 通過(guò)對(duì)一個(gè)復(fù)雜的視圖結(jié)構(gòu),例如以下示例代碼中,對(duì)包含100個(gè)Image組件控制。的Column容器進(jìn)行顯示與隱藏控制,分別采用if條件判斷和visibility屬性
    發(fā)表于 06-24 16:21

    【「# ROS 2智能機(jī)器人開發(fā)實(shí)踐」閱讀體驗(yàn)】視覺(jué)實(shí)現(xiàn)的基礎(chǔ)算法的應(yīng)用

    視覺(jué)巡線,展示了如何從數(shù)據(jù)采集、模型訓(xùn)練到機(jī)器人部署的完整流程。 值得注意的是,深度學(xué)習(xí)模型的實(shí)時(shí)性對(duì)機(jī)器人計(jì)算資源提出了較高要求,優(yōu)化模型
    發(fā)表于 05-03 19:41

    彈性布局 (Flex) 提供更加有效的方式對(duì)容器中的子元素進(jìn)行排列、對(duì)齊和分配剩余空間

    (0xAFEEEE) FlexDirection.Column:主軸為垂直方向,子元素從起始端沿著垂直方向開始排布。 Flex({ direction: FlexDirection.Column }) {Text
    發(fā)表于 04-30 07:54

    層疊布局 (Stack):Stack組件為容器組件,容器內(nèi)可包含各種子元素

    層疊布局 (Stack) 層疊布局(StackLayout)用于在屏幕上預(yù)留一塊區(qū)域來(lái)顯示組件中的元素,提供元素可以重疊的布局。層疊布局通過(guò)Stack容器組件實(shí)現(xiàn)位置的固定定位與層疊,容器中的子
    發(fā)表于 04-30 07:51

    半導(dǎo)體器件中微量摻雜元素的EDS表征

    微量摻雜元素在半導(dǎo)體器件的發(fā)展中起著至關(guān)重要的作用,可以精準(zhǔn)調(diào)控半導(dǎo)體的電學(xué)、光學(xué)性能。對(duì)器件中微量摻雜元素的準(zhǔn)確表征和分析是深入理解半導(dǎo)體器件特性、優(yōu)化器件性能的關(guān)鍵步驟,然而由于微量摻雜
    的頭像 發(fā)表于 04-25 14:29 ?668次閱讀
    半導(dǎo)體器件中微量摻雜<b class='flag-5'>元素</b>的EDS表征

    掃描電鏡能測(cè)定什么元素?

    掃描電鏡本身主要用于觀察樣品的微觀形貌,但與能譜儀(EDS)或波譜儀(WDS)等設(shè)備聯(lián)用后,可用于測(cè)定多種元素,具體如下:能譜儀(EDS)可測(cè)定的元素-輕元素:一般能測(cè)定原子序數(shù)大于等于4的
    的頭像 發(fā)表于 02-20 11:40 ?1266次閱讀
    掃描電鏡能測(cè)定什么<b class='flag-5'>元素</b>?

    解決HarmonyOS應(yīng)用中Image組件白塊問(wèn)題的有效方案

    碼完成后才刷新顯示。由于圖片下載過(guò)程耗時(shí)較長(zhǎng),在圖片完全加載之前,頁(yè)面往往會(huì)顯示空白區(qū)域或占位圖(通常為白色或淺色背景),這種現(xiàn)象被稱為“Image 白塊”?!?b class='flag-5'>Image 白塊”不僅影響視覺(jué)效果,還會(huì)降低用戶體驗(yàn),因此在開發(fā)中應(yīng)
    的頭像 發(fā)表于 02-17 10:08 ?1120次閱讀
    解決HarmonyOS應(yīng)用中<b class='flag-5'>Image</b>組件白塊問(wèn)題的有效方案

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

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

    《DNK210使用指南 -CanMV版 V1.0》第三十三章 image元素繪制實(shí)驗(yàn)

    第三十三章 image元素繪制實(shí)驗(yàn) 在前面的章節(jié)中已經(jīng)陸續(xù)提到了image模塊的一些基本使用,從本章開始將通過(guò)幾個(gè)章節(jié)詳細(xì)地介紹image模塊的使用,本章將講解
    發(fā)表于 11-04 14:22

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

    樣品,并調(diào)整實(shí)驗(yàn)參數(shù)采集馬鈴薯光譜數(shù)據(jù);然后針對(duì)光譜數(shù)據(jù)中的噪聲和基線漂移的問(wèn)題對(duì)光譜數(shù)據(jù)進(jìn)行前期處理;最后采用絕對(duì)強(qiáng)度法定量分析Cr元素,同時(shí),計(jì)算模型評(píng)價(jià)指標(biāo)以評(píng)估定量性能。通過(guò)實(shí)驗(yàn)和數(shù)據(jù)分析,驗(yàn)證LIBS技術(shù)的可行性。 二、
    的頭像 發(fā)表于 10-30 18:11 ?570次閱讀
    基于LIBS的馬鈴薯中鉻<b class='flag-5'>元素</b>定量分析方法研究

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

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

    TINA-TI導(dǎo)入spice模型失敗,提示語(yǔ)法元素錯(cuò)誤是哪里出了問(wèn)題?

    在使用TINA-TI 導(dǎo)入器件的Spice模型時(shí),提示錯(cuò)誤語(yǔ)法元素錯(cuò)誤,不能導(dǎo)入器件,其spice內(nèi)容如下:煩請(qǐng)知道,非常感謝! * DRB501VM-40 D model * PKG: UMD2
    發(fā)表于 08-09 07:51

    LED機(jī)械矩陣屏:打造獨(dú)特視覺(jué)效果視覺(jué)盛宴

    一、引言 隨著科技的不斷發(fā)展,LED顯示技術(shù)也在不斷更新和升級(jí)。其中,LED機(jī)械矩陣屏憑借其獨(dú)特的視覺(jué)效果和靈活的應(yīng)用場(chǎng)景,成為了新一代的顯示設(shè)備。本文將為您介紹LED機(jī)械矩陣屏的相關(guān)知識(shí),幫助
    的頭像 發(fā)表于 07-29 09:30 ?928次閱讀