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

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

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

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

如何使用QML Profiler來分析QML應(yīng)用

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

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

本文主要以QML Profiler工具本身出發(fā),描述如何使用QML Profiler來分析QML應(yīng)用,記錄其常規(guī)使用方法。

設(shè)置QML Profiler

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

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

可以選中“Flush data while profiling”復(fù)選框,用于在分析停止時(shí)定期刷新數(shù)據(jù),這將節(jié)省目標(biāo)設(shè)備上的內(nèi)存,縮短了停止分析和顯示數(shù)據(jù)之間的等待時(shí)間。

在“Flush interval”字段中,以毫秒為單位設(shè)置刷新間隔。間隔時(shí)間越短,刷新數(shù)據(jù)的頻率就越高。間隔越長(zhǎng),目標(biāo)應(yīng)用程序中需要緩沖的數(shù)據(jù)就越多,可能會(huì)浪費(fèi)內(nèi)存。但是,刷新本身是需要時(shí)間的,這可能會(huì)影響分析結(jié)果的顯示。

如果有多個(gè)QML引擎,并且希望將所有引擎產(chǎn)生的數(shù)據(jù)聚合到一個(gè)跟蹤視圖中,那么就選中“ Process data only when process ends”復(fù)選框。如果不選中,當(dāng)一個(gè)引擎停止時(shí),分析就停止了。

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

使用QML Profiler

在QtCreator中使用QML Profiler分析應(yīng)用軟件,按照以下步驟即可:在已經(jīng)創(chuàng)建了一個(gè)項(xiàng)目工程的前提下,依次點(diǎn)擊Analyze -> QML Profiler:

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

然后會(huì)自動(dòng)編譯運(yùn)行對(duì)應(yīng)的項(xiàng)目工程,QML Profiler在我們的應(yīng)用軟件運(yùn)行過程中,會(huì)出現(xiàn)下圖所示的類似信息:

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

(當(dāng)程序開始運(yùn)行后,會(huì)自動(dòng)進(jìn)行時(shí)間計(jì)數(shù)。如果有輸入事件,還會(huì)顯示對(duì)應(yīng)的事件捕獲信息)

分析收集的數(shù)據(jù)

在QML應(yīng)用程序退出后,則會(huì)在QML Profiler視圖中自動(dòng)顯示數(shù)據(jù),如下圖所示:60744ef8-3231-11ed-ba43-dac502259ad0.png

上圖中,水平為時(shí)間軸,該時(shí)間軸是監(jiān)聽QML應(yīng)用軟件開始到結(jié)束的時(shí)間。上方有對(duì)應(yīng)的時(shí)刻顯示;中間位置則是統(tǒng)計(jì)的數(shù)據(jù),我們可以用鼠標(biāo)點(diǎn)擊對(duì)應(yīng)的數(shù)據(jù)區(qū)塊(可以在信息顯示欄中看到對(duì)應(yīng)時(shí)間內(nèi)區(qū)塊的數(shù)據(jù)情況)。左側(cè)是事件分類,事件在時(shí)間軸視圖的以一行或多行顯示。可用的事件類型取決于應(yīng)用程序編譯時(shí)所使用的Qt版本以及使用的Qt Quick版本。在顯示數(shù)據(jù)時(shí),有如下表所示的事件分類:

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

注:由于QML應(yīng)用程序在啟動(dòng)創(chuàng)建過程中,組件的創(chuàng)建時(shí)間極短(一般都是在微秒級(jí)別),然而在時(shí)間線視圖中所呈現(xiàn)的是所有監(jiān)聽時(shí)間內(nèi)的數(shù)據(jù),如下圖所示:

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

所以需要縮小時(shí)間軸(按住Ctrl,向上滾動(dòng)鼠標(biāo)中鍵或者用鼠標(biāo)拖動(dòng)時(shí)間軸)去查看組件創(chuàng)建相關(guān)的數(shù)據(jù)信息。例如下圖所示:

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

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

從Flame Graph視圖分析數(shù)據(jù)

『Flame Graph』視圖顯示了關(guān)于QML和JavaScript執(zhí)行情況的更簡(jiǎn)明的統(tǒng)計(jì)信息。在Total Time視圖中,水平條顯示了相對(duì)于所有JavaScript和QML事件的總的運(yùn)行時(shí)間,還顯示調(diào)用某個(gè)函數(shù)所花費(fèi)的總時(shí)間,而且嵌套顯示了函數(shù)調(diào)用情況。

在下拉菜單中選擇Memory,可以查看各函數(shù)分配的內(nèi)存總量

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

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

(這張圖可以“從下往上”看,越往上就是QML中的最小元素了。點(diǎn)擊視圖中的某一項(xiàng)同時(shí)會(huì)跳轉(zhuǎn)到在代碼中的對(duì)應(yīng)行上。)

注:使用鼠標(biāo)左鍵雙擊視圖中的項(xiàng)目可以放大對(duì)應(yīng)視圖。雙擊視圖中的空白區(qū)域可以再次縮小。

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

從Statistics視圖分析數(shù)據(jù)

『Statistics』視圖顯示了QML應(yīng)用中binding、create、compile、JavaScript或信號(hào)事件被觸發(fā)的次數(shù),以及花費(fèi)的平均時(shí)間,如下圖所示:

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

這可以讓我們檢查需要優(yōu)化的事件,如果某事件大量出現(xiàn)可能表明觸發(fā)了不必要的事件。要查看事件發(fā)生的中位數(shù)、最長(zhǎng)時(shí)間和最短時(shí)間,可以在上下文菜單中選擇擴(kuò)展事件統(tǒng)計(jì)。
6153bb88-3231-11ed-ba43-dac502259ad0.png

接著數(shù)據(jù)顯示將如下圖所示:

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

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

結(jié)尾

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

導(dǎo)致類似性能問題的另一個(gè)典型原因是:創(chuàng)建、繪制或更新了不可見項(xiàng),該操作在GUI線程中需要花費(fèi)許多的時(shí)間。

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

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

本文主要描述了如何使用QML Profiler來分析應(yīng)用程序,更多的內(nèi)容是從工具本身出發(fā)的。如果后續(xù)遇著QML應(yīng)用軟件設(shè)計(jì)上的嚴(yán)重性能問題時(shí),在寫寫啦。




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    2987

    瀏覽量

    107247
  • 管理器
    +關(guān)注

    關(guān)注

    0

    文章

    252

    瀏覽量

    18969
  • 分析器
    +關(guān)注

    關(guān)注

    0

    文章

    93

    瀏覽量

    12686

原文標(biāo)題:一文入門QML應(yīng)用程序的性能分析

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

收藏 人收藏

    評(píng)論

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

    ADC08D1520QML可以采集到的最高頻率是多少?

    如題,ADC08D1520QML的采樣率為最高3GSPS。那如果我要采集的信號(hào)的頻率是1GHZ的,采集效果會(huì)如何呢?
    發(fā)表于 02-06 06:51

    LM555QML定時(shí)器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《LM555QML定時(shí)器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 08-20 09:29 ?0次下載
    LM555<b class='flag-5'>QML</b>定時(shí)器數(shù)據(jù)表

    ADC128S102QML-SP 50 kSPS至1 MSPS、12位模數(shù)轉(zhuǎn)換器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《ADC128S102QML-SP 50 kSPS至1 MSPS、12位模數(shù)轉(zhuǎn)換器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-22 11:15 ?0次下載
    ADC128S102<b class='flag-5'>QML</b>-SP 50 kSPS至1 MSPS、12位模數(shù)轉(zhuǎn)換器數(shù)據(jù)表

    ADC14155QML-SP耐輻射、14位、155MSPS、1.1GHz帶寬模數(shù)轉(zhuǎn)換器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《ADC14155QML-SP耐輻射、14位、155MSPS、1.1GHz帶寬模數(shù)轉(zhuǎn)換器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-22 10:40 ?0次下載
    ADC14155<b class='flag-5'>QML</b>-SP耐輻射、14位、155MSPS、1.1GHz帶寬模數(shù)轉(zhuǎn)換器數(shù)據(jù)表

    ADC08D1520QML-SP高性能CMOS模數(shù)轉(zhuǎn)換器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《ADC08D1520QML-SP高性能CMOS模數(shù)轉(zhuǎn)換器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-22 09:50 ?0次下載
    ADC08D1520<b class='flag-5'>QML</b>-SP高性能CMOS模數(shù)轉(zhuǎn)換器數(shù)據(jù)表

    DAC121S101QML-SP通用12位電壓輸出數(shù)模轉(zhuǎn)換器(DAC)數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《DAC121S101QML-SP通用12位電壓輸出數(shù)模轉(zhuǎn)換器(DAC)數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-22 09:32 ?0次下載
    DAC121S101<b class='flag-5'>QML</b>-SP通用12位電壓輸出數(shù)模轉(zhuǎn)換器(DAC)數(shù)據(jù)表

    具有LVDS輸出的LM98640QML-SP抗輻射加固(RHA)型、雙通道、14位、40MSPS模擬前端數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《具有LVDS輸出的LM98640QML-SP抗輻射加固(RHA)型、雙通道、14位、40MSPS模擬前端數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-22 09:27 ?0次下載
    具有LVDS輸出的LM98640<b class='flag-5'>QML</b>-SP抗輻射加固(RHA)型、雙通道、14位、40MSPS模擬前端數(shù)據(jù)表

    ADC12D1600QML低功耗、高性能CMOS模數(shù)轉(zhuǎn)換器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《ADC12D1600QML低功耗、高性能CMOS模數(shù)轉(zhuǎn)換器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-16 09:56 ?0次下載
    ADC12D1600<b class='flag-5'>QML</b>低功耗、高性能CMOS模數(shù)轉(zhuǎn)換器數(shù)據(jù)表

    DS78LS120/DS78LS120QML雙通道差分線路接收器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《DS78LS120/DS78LS120QML雙通道差分線路接收器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-05 09:32 ?0次下載
    DS78LS120/DS78LS120<b class='flag-5'>QML</b>雙通道差分線路接收器數(shù)據(jù)表

    DS26LV31QML 3V增強(qiáng)型CMOS四路差分線路驅(qū)動(dòng)器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《DS26LV31QML 3V增強(qiáng)型CMOS四路差分線路驅(qū)動(dòng)器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-05 09:22 ?0次下載
    DS26LV31<b class='flag-5'>QML</b> 3V增強(qiáng)型CMOS四路差分線路驅(qū)動(dòng)器數(shù)據(jù)表

    DS9638QML RS-422雙通道高速差分線路驅(qū)動(dòng)器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《DS9638QML RS-422雙通道高速差分線路驅(qū)動(dòng)器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-03 11:46 ?0次下載
    DS9638<b class='flag-5'>QML</b> RS-422雙通道高速差分線路驅(qū)動(dòng)器數(shù)據(jù)表

    DS90C032QML LVDS四路CMOS差分線路接收器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《DS90C032QML LVDS四路CMOS差分線路接收器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-01 15:04 ?0次下載
    DS90C032<b class='flag-5'>QML</b> LVDS四路CMOS差分線路接收器數(shù)據(jù)表

    DS90C031QML LVDS四路CMOS差分線路驅(qū)動(dòng)器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《DS90C031QML LVDS四路CMOS差分線路驅(qū)動(dòng)器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-01 15:03 ?0次下載
    DS90C031<b class='flag-5'>QML</b> LVDS四路CMOS差分線路驅(qū)動(dòng)器數(shù)據(jù)表

    DS1776QML PI總線收發(fā)器數(shù)據(jù)表

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

    QML五類RS-422四差分線路接收機(jī)AM26LS33A數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《QML五類RS-422四差分線路接收機(jī)AM26LS33A數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 06-27 10:38 ?0次下載
    <b class='flag-5'>QML</b>五類RS-422四差分線路接收機(jī)AM26LS33A數(shù)據(jù)表
    主站蜘蛛池模板: 日本免费黄色小视频 | 高清一区二区三区四区五区 | h视频免费高清在线观看 | 欧美性色欧美a在线播放 | 一区二区在线免费视频 | 国产嫩草影院精品免费网址 | 日本a级三级三级三级久久 日本a级影院 | 天天狠天天透 | 人人澡人人搞 | 天堂网www在线资源网 | 天天干天天透 | 丁香六月在线观看 | 亚洲精品黄色 | 四虎最新网 | 在线观看视频你懂的 | 免费一级欧美在线观看视频片 | 精品在线视频一区 | 国产一级特黄高清免费大片 | 国产午夜精品一区二区 | 久久精品国产免费 | 久操操 | 欧美日韩一卡2卡三卡4卡新区 | 欧美大尺度aaa级毛片 | 四虎在线观看免费永久 | 国模私拍一区二区三区 | 天堂网中文在线 | 天天天综合网 | 黄色一级片在线观看 | 五月天激情开心网 | 日本特级淫片免费看 | 丁香五六月婷婷 | 男人日女人视频免费看 | 欧美在线视频7777kkkk | 色校园| 天天插天天干天天射 | 中文字幕在线看视频一区二区三区 | 国产成人v爽在线免播放观看 | 国产乱码1卡一卡二卡 | 午夜乩伦 | 欧美一级高清片欧美国产欧美 | 一级一级一片免费高清 |