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

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

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

3天內不再提示

如何使用QML Profiler來分析QML應用

工程師鄧生 ? 來源:嵌入式小生 ? 作者:iriczhao ? 2022-09-13 11:37 ? 次閱讀

在QML應用開發過程中,可以使用QML Profiler來查找應用程序中典型性能問題的原因,例如啟動慢、響應慢、用戶界面不流暢等。

本文主要以QML Profiler工具本身出發,描述如何使用QML Profiler來分析QML應用,記錄其常規使用方法。

設置QML Profiler

在QtCreator中,依次打開編輯->Preferences->分析器->QML Profiler:

5ff68bee-3231-11ed-ba43-dac502259ad0.png

可以選中“Flush data while profiling”復選框,用于在分析停止時定期刷新數據,這將節省目標設備上的內存,縮短了停止分析和顯示數據之間的等待時間。

在“Flush interval”字段中,以毫秒為單位設置刷新間隔。間隔時間越短,刷新數據的頻率就越高。間隔越長,目標應用程序中需要緩沖的數據就越多,可能會浪費內存。但是,刷新本身是需要時間的,這可能會影響分析結果的顯示。

如果有多個QML引擎,并且希望將所有引擎產生的數據聚合到一個跟蹤視圖中,那么就選中“ Process data only when process ends”復選框。如果不選中,當一個引擎停止時,分析就停止了。

注:在QtCreator中,一般不用設置QML Profiler,我們直接使用就可以了

使用QML Profiler

在QtCreator中使用QML Profiler分析應用軟件,按照以下步驟即可:在已經創建了一個項目工程的前提下,依次點擊Analyze -> QML Profiler:

60293cc4-3231-11ed-ba43-dac502259ad0.png

然后會自動編譯運行對應的項目工程,QML Profiler在我們的應用軟件運行過程中,會出現下圖所示的類似信息

6051494e-3231-11ed-ba43-dac502259ad0.png

(當程序開始運行后,會自動進行時間計數。如果有輸入事件,還會顯示對應的事件捕獲信息)

分析收集的數據

在QML應用程序退出后,則會在QML Profiler視圖中自動顯示數據,如下圖所示:60744ef8-3231-11ed-ba43-dac502259ad0.png

上圖中,水平為時間軸,該時間軸是監聽QML應用軟件開始到結束的時間。上方有對應的時刻顯示;中間位置則是統計的數據,我們可以用鼠標點擊對應的數據區塊(可以在信息顯示欄中看到對應時間內區塊的數據情況)。左側是事件分類,事件在時間軸視圖的以一行或多行顯示。可用的事件類型取決于應用程序編譯時所使用的Qt版本以及使用的Qt Quick版本。在顯示數據時,有如下表所示的事件分類:

事件分類 描述
Pixmap Cache 以像素為單位顯示緩存的pixmap數據的總體數量。此外,顯示一個單獨的事件,每當加載一張圖片,顯示與它相關的文件名和大小信息
Scene Graph 顯示渲染場景圖幀的時間,以及渲染的各個階段的額外的時間信息
Memory Usage 顯示JavaScript內存管理器的塊分配。通常,內存管理器會將較大的內存塊保存為一塊,然后將它們以較小的塊分發給應用程序。如果應用程序請求單個內存塊超過某個大小,內存管理器將分別分配這些內存塊。這兩種操作模式以不同顏色的事件顯示。第一行顯示內存管理器所分配的大內存塊的大小;第二行顯示所分配內存的實際使用情況,這是應用程序實際請求的JavaScript堆的大小
Input Events 顯示鼠標和鍵盤事件
Painting 顯示為每幀繪制場景所花費的時間
Animations 顯示活動的動畫數量和它們運行的幀率。使用Qt 5.3或更高版本構建的應用程序將顯示有關渲染線程動畫的信息。然后渲染線程動畫顯示在單獨的行中。
Compiling 顯示編譯QML文件所花費的時間。
Creating 顯示場景中創建元素所花費的時間。在Qt Quick 2中,創建元素組件分為兩個階段:(1)第一個階段是創建數據結構,包括子元素。(2)第二個階段表示完成回調機制處理(信號和信號處理機制)。但是,并不是所有元素都觸發完成回調。這兩個階段在時間軸中顯示為獨立的事件。
Binding 顯示計算綁定的時間以及計算所需的時間
Handling Signal 顯示處理信號的時間以及處理所需的時間。
JavaScript 顯示在綁定和信號處理程序后面執行實際JavaScript所花費的時間。它列出了可能用于計算綁定或處理信號的所有JavaScript函數。

注:由于QML應用程序在啟動創建過程中,組件的創建時間極短(一般都是在微秒級別),然而在時間線視圖中所呈現的是所有監聽時間內的數據,如下圖所示:

60a7808e-3231-11ed-ba43-dac502259ad0.png

所以需要縮小時間軸(按住Ctrl,向上滾動鼠標中鍵或者用鼠標拖動時間軸)去查看組件創建相關的數據信息。例如下圖所示:

60d09be0-3231-11ed-ba43-dac502259ad0.png

(由上圖可見,大約需要2.41ms創建完QML的小組件)

從Flame Graph視圖分析數據

『Flame Graph』視圖顯示了關于QML和JavaScript執行情況的更簡明的統計信息。在Total Time視圖中,水平條顯示了相對于所有JavaScript和QML事件的總的運行時間,還顯示調用某個函數所花費的總時間,而且嵌套顯示了函數調用情況。

在下拉菜單中選擇Memory,可以查看各函數分配的內存總量

如果要查看函數分配的內存數量,就需要選中下拉菜單中的Allocations一欄。如下圖所示:

60f67144-3231-11ed-ba43-dac502259ad0.png

(這張圖可以“從下往上”看,越往上就是QML中的最小元素了。點擊視圖中的某一項同時會跳轉到在代碼中的對應行上。)

注:使用鼠標左鍵雙擊視圖中的項目可以放大對應視圖。雙擊視圖中的空白區域可以再次縮小。

與『Timeline』視圖不同,在沒有QML或JavaScript運行的時候,『Flame Graph』視圖不顯示時間跨度,因此,『Flame Graph』不適合分析QML應用中每幀的執行時間(『Timeline』視圖更適合)。但是,該視圖可以很清晰的看到在QML應用程序運行過程中,各種QML和JavaScript事件的總體情況。

從Statistics視圖分析數據

『Statistics』視圖顯示了QML應用中binding、create、compile、JavaScript或信號事件被觸發的次數,以及花費的平均時間,如下圖所示:

612967ac-3231-11ed-ba43-dac502259ad0.png

這可以讓我們檢查需要優化的事件,如果某事件大量出現可能表明觸發了不必要的事件。要查看事件發生的中位數、最長時間和最短時間,可以在上下文菜單中選擇擴展事件統計。
6153bb88-3231-11ed-ba43-dac502259ad0.png

接著數據顯示將如下圖所示:

61742094-3231-11ed-ba43-dac502259ad0.png

Caller和Callee一欄顯示了事件之間的依賴關系,用于檢查應用程序的內部功能。Caller一欄表示觸發綁定的QML事件,通過Caller我們可以知道是什么觸發了綁定中的更改。Callee表示綁定觸發的QML事件,從Callee我們可以知道如果更改綁定,哪些QML事件將會受到影響。

結尾

在QML應用程序中,出現啟動慢、響應慢、用戶界面不流暢等性能方面的問題時。典型的原因可能是:在太少的幀中執行了太多的JavaScript。這意味著所有的JavaScript都必須在GUI線程繼續運行之前返回(執行完成)。

導致類似性能問題的另一個典型原因是:創建、繪制或更新了不可見項,該操作在GUI線程中需要花費許多的時間。

在QML Profiler分析視圖中,為了發現過度使用JavaScript,應檢查Animations和Scene Graph事件中的幀率,尋找間隙,并檢查應用程序是否如預期的那樣運行。對于JavaScript類別顯示函數的運行時間,應該盡量將其控制在每幀16毫秒以下(注:官方文檔給出的參數)。

要發現如果是不可見項引起的性能問題,需要查找丟失的幀,并檢查是否在應用程序代碼中使用了太多的短綁定每幀都要更新的信號處理程序。除此之外,我們還可以可視化場景圖,并找到不可見的項目,因為這些項目往往位于屏幕外或隱藏在其他可見元素之下,稍不留神就溜了。

本文主要描述了如何使用QML Profiler來分析應用程序,更多的內容是從工具本身出發的。如果后續遇著QML應用軟件設計上的嚴重性能問題時,在寫寫啦。




審核編輯:劉清

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

    關注

    19

    文章

    2974

    瀏覽量

    104984
  • 管理器
    +關注

    關注

    0

    文章

    248

    瀏覽量

    18586
  • 分析器
    +關注

    關注

    0

    文章

    93

    瀏覽量

    12532

原文標題:一文入門QML應用程序的性能分析

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

收藏 人收藏

    評論

    相關推薦

    LM555QML定時器數據表

    電子發燒友網站提供《LM555QML定時器數據表.pdf》資料免費下載
    發表于 08-20 09:29 ?0次下載
    LM555<b class='flag-5'>QML</b>定時器數據表

    DS1776QML PI總線收發器數據表

    電子發燒友網站提供《DS1776QML PI總線收發器數據表.pdf》資料免費下載
    發表于 07-01 14:28 ?0次下載
    DS1776<b class='flag-5'>QML</b> PI總線收發器數據表

    LM741QML運算放大器數據表

    電子發燒友網站提供《LM741QML運算放大器數據表.pdf》資料免費下載
    發表于 06-15 11:24 ?0次下載
    LM741<b class='flag-5'>QML</b>運算放大器數據表

    LM748QML運算放大器數據表

    電子發燒友網站提供《LM748QML運算放大器數據表.pdf》資料免費下載
    發表于 06-15 10:49 ?0次下載
    LM748<b class='flag-5'>QML</b>運算放大器數據表

    LM747QML雙通道運算放大器數據表

    電子發燒友網站提供《LM747QML雙通道運算放大器數據表.pdf》資料免費下載
    發表于 06-15 10:18 ?0次下載
    LM747<b class='flag-5'>QML</b>雙通道運算放大器數據表

    LM7171QML,LM7171QML-SP高速電壓反饋放大器數據表

    電子發燒友網站提供《LM7171QML,LM7171QML-SP高速電壓反饋放大器數據表.pdf》資料免費下載
    發表于 06-15 10:17 ?0次下載
    LM7171<b class='flag-5'>QML</b>,LM7171<b class='flag-5'>QML</b>-SP高速電壓反饋放大器數據表

    LF156QML JFET輸入運算放大器數據表

    電子發燒友網站提供《LF156QML JFET輸入運算放大器數據表.pdf》資料免費下載
    發表于 06-15 10:14 ?0次下載
    LF156<b class='flag-5'>QML</b> JFET輸入運算放大器數據表

    LM10QML單芯片線性ic數據表

    電子發燒友網站提供《LM10QML單芯片線性ic數據表.pdf》資料免費下載
    發表于 06-15 10:02 ?0次下載
    LM10<b class='flag-5'>QML</b>單芯片線性ic數據表

    LMH6715QML雙通道寬帶視頻運算放大器數據表

    電子發燒友網站提供《LMH6715QML雙通道寬帶視頻運算放大器數據表.pdf》資料免費下載
    發表于 06-15 09:18 ?0次下載
    LMH6715<b class='flag-5'>QML</b>雙通道寬帶視頻運算放大器數據表

    LM6172QML雙通道高速電壓反饋放大器數據表

    電子發燒友網站提供《LM6172QML雙通道高速電壓反饋放大器數據表.pdf》資料免費下載
    發表于 06-14 09:24 ?0次下載
    LM6172<b class='flag-5'>QML</b>雙通道高速電壓反饋放大器數據表

    LM118QML運算放大器數據表

    電子發燒友網站提供《LM118QML運算放大器數據表.pdf》資料免費下載
    發表于 06-06 10:26 ?0次下載
    LM118<b class='flag-5'>QML</b>運算放大器數據表

    QML V類電流型PWM控制器UC1843系列數據表

    電子發燒友網站提供《QML V類電流型PWM控制器UC1843系列數據表.pdf》資料免費下載
    發表于 04-08 11:21 ?0次下載
    <b class='flag-5'>QML</b> V類電流型PWM控制器UC1843系列數據表

    5.0V參考二極管LM136A-5.0QML LM136-5.0QML數據表

    電子發燒友網站提供《5.0V參考二極管LM136A-5.0QML LM136-5.0QML數據表.pdf》資料免費下載
    發表于 04-08 09:27 ?0次下載
    5.0V參考二極管LM136A-5.0<b class='flag-5'>QML</b> LM136-5.0<b class='flag-5'>QML</b>數據表

    3 端子可調節負穩壓器LM137QML數據表

    電子發燒友網站提供《3 端子可調節負穩壓器LM137QML數據表.pdf》資料免費下載
    發表于 04-07 14:22 ?0次下載
    3 端子可調節負穩壓器LM137<b class='flag-5'>QML</b>數據表

    3端子可調節調節調節器LM117QML數據表

    電子發燒友網站提供《3端子可調節調節調節器LM117QML數據表.pdf》資料免費下載
    發表于 03-29 10:41 ?0次下載
    3端子可調節調節調節器LM117<b class='flag-5'>QML</b>數據表
    主站蜘蛛池模板: 涩涩爱涩涩电影网站 | 91热久久免费精品99 | 女人被躁到高潮嗷嗷叫69 | 日韩精品在线观看免费 | 中文字幕精品无码一区二区 | 日韩中文无线码在线视频 | 精品国产麻豆免费人成网站 | 欧美精品专区第1页 | 国产色婷亚洲99精品AV在线 | 性xxx欧美 | 久久精品国产清白在天天线 | 欧美巨大xxxx做受孕妇视频 | 538在线播放 | 影音先锋xfplay影院av | 四虎国产精品永久免费入口 | 日韩久久影院 | 国产精品人妻久久无码不卡 | 91麻豆精品一二三区在线 | 亚洲欧洲日韩天堂无吗 | 成年人免费观看视频网站 | 挤奶门事件完整照片 | 肉耽高h一受n攻 | 欧美激情视频在线观看一区二区三区 | 白丝美女被狂躁免费漫画 | 国产精品7777人妻精品冫 | 中文成人在线视频 | 亚洲午夜精品一区二区公牛电影院 | 亚洲精品国产乱码AV在线观看 | 日韩精品久久久久久久电影 | 国产精自产拍久久久久久蜜 | 麻豆蜜桃国语精品无码视频 | 老司机亚洲精品影院在线观看 | 在线看片av以及毛片 | 戳女人屁股流水羞羞漫画 | 日本久久久免费高清 | 久久中文字幕亚洲精品最新 | 国产精品久久久久久搜索 | 男女又黄又刺激B片免费网站 | 97久久精品人人槡人妻人 | 精品一区二区三区高清免费观看 | 精品区2区3区4区产品乱码9 |