国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

    文章

    1096

    瀏覽量

    42330
  • 模型
    +關注

    關注

    1

    文章

    3752

    瀏覽量

    52111
  • 線程
    +關注

    關注

    0

    文章

    509

    瀏覽量

    20828

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Nullmax研發團隊靜態元素檢測和拓撲推理新成果入選CVPR 2026

    CVPR 2026(國際計算機視覺與模式識別會議)論文錄用結果揭曉,Nullmax 研發團隊在自動駕駛靜態元素理解領域的最新研究 TopoHR 成功入選。該研究為靜態元素檢測以及拓撲推理提供了突破性
    的頭像 發表于 02-28 10:08 ?444次閱讀

    使用NVIDIA AI Blueprint打造3D世界

    在傳統工作流中,建模師必須構建占位模型、低精度資產來填充 3D 場景,優化核心資產以完成場景。之后,可以優化、細化并最終完成視覺效果。
    的頭像 發表于 09-23 14:35 ?948次閱讀

    微量摻雜元素在半導體器件發展中的作用

    微量摻雜元素表征的意義1.材料性能摻雜元素可改變半導體的能帶結構和載流子行為,從而決定器件的電學特性。以硅材料為例,摻入五價砷(As)元素可為晶格引入多余電子,使本征硅轉變為n型半導體,直接影響導電
    的頭像 發表于 08-27 14:58 ?818次閱讀
    微量摻雜<b class='flag-5'>元素</b>在半導體器件發展中的作用

    Text2SQL準確率暴漲22.6%!3大維度全拆

    摘要 技術背景:Text2SQL 是將自然語言查詢轉為 SQL 的任務,經歷了基于規則、神經網絡、預訓練語言模型、大語言模型四個階段。當前面臨提示
    的頭像 發表于 08-14 11:17 ?705次閱讀
    <b class='flag-5'>Text</b>2SQL準確率暴漲22.6%!3大維度全拆

    EDS分析元素的基本原理

    EDS對元素定性分析高能電子束入射到樣品表面部分區域,這部分區域表層中的原子,其殼層(K、L層等)的電子被激發到較高能量的外殼層(L、M層等)或者原子外成為二次電子,該原子處于激發態(高能量),為使
    的頭像 發表于 08-08 11:41 ?1328次閱讀
    EDS分析<b class='flag-5'>元素</b>的基本原理

    HarmonyOS NEXT應用元服務布局優化精簡節點數

    去掉ImageText外層的Row來減少層級,如果視圖更加復雜,布局在渲染時,會產生沒有必要的計算。 Row() { Image() Text
    發表于 06-26 10:21

    HarmonyOS NEXT應用元服務布局優化精簡節點數

    去掉ImageText外層的Row來減少層級,如果視圖更加復雜,布局在渲染時,會產生沒有必要的計算。 Row() { Image() Text
    發表于 06-26 10:21

    HarmonyOS NEXT應用元服務布局優化合理使用渲染控制語法

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

    鴻蒙5開發寶藏案例分享---性能體驗設計

    asyncLoadImage() }) } ? 關鍵點 :用戶點擊后100ms內必須給視覺反饋(哪怕內容沒加載完) 二、交互流暢實戰案例 案例1:列表滑動優化(解決丟幀) **官方文檔要求:**連續
    發表于 06-12 16:45

    【「# ROS 2智能機器人開發實踐」閱讀體驗】視覺實現的基礎算法的應用

    視覺巡線,展示了如何從數據采集、模型訓練到機器人部署的完整流程。 值得注意的是,深度學習模型的實時性對機器人計算資源提出了較高要求,優化模型
    發表于 05-03 19:41

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

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

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

    層疊布局 (Stack) 層疊布局(StackLayout)用于在屏幕上預留一塊區域來顯示組件中的元素,提供元素可以重疊的布局。層疊布局通過Stack容器組件實現位置的固定定位與層疊,容器中的子
    發表于 04-30 07:51

    半導體器件中微量摻雜元素的EDS表征

    微量摻雜元素在半導體器件的發展中起著至關重要的作用,可以精準調控半導體的電學、光學性能。對器件中微量摻雜元素的準確表征和分析是深入理解半導體器件特性、優化器件性能的關鍵步驟,然而由于微量摻雜
    的頭像 發表于 04-25 14:29 ?2030次閱讀
    半導體器件中微量摻雜<b class='flag-5'>元素</b>的EDS表征

    基于LIBS技術的渣選尾礦中銅元素的在線檢測研究

    采用基于LIBS技術的在線分析儀對銅尾礦中銅元素含量進行了在線檢測應用研究。通過分析20個銅尾礦樣品中銅元素含量化驗室離線檢測值與在線檢測值,滿足銅尾礦銅回收率的判斷需要,可為銅熔煉渣浮選加工提供指導。
    的頭像 發表于 03-17 17:08 ?1090次閱讀
    基于LIBS技術的渣選尾礦中銅<b class='flag-5'>元素</b>的在線檢測研究

    深海沉積物中稀土元素浸出及LIBS光譜探測方法研究

    具有深海原位稀土元素探測的潛能,證實了利用 LIBS結合多變量回歸分析對深海沉積物中稀土元素進行檢測和評價是可行的,為實現 LIBS深海稀土探測提供數據支持。
    的頭像 發表于 03-17 16:32 ?783次閱讀
    深海沉積物中稀土<b class='flag-5'>元素</b>浸出及LIBS光譜探測方法研究