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

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

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

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

OpenHarmony上使用火焰圖

OpenHarmony技術(shù)社區(qū) ? 來源:OST開源開發(fā)者 ? 2023-04-17 10:18 ? 次閱讀

一般來說,我們發(fā)現(xiàn)程序卡頓,排除其他程序問題和硬件問題,那一定是自身程序中某個(gè)位置運(yùn)行時(shí),消耗的時(shí)間過長導(dǎo)致。

性能問題分析方式

要找到耗時(shí)的代碼段,才能有針對性的進(jìn)行優(yōu)化,那第一個(gè)問題就是如何找到耗時(shí)的代碼段。

首先我們能想到,在程序中可能存在問題的地方,加入計(jì)算時(shí)間差的代碼,然后不斷縮小范圍,找到最終耗時(shí)的點(diǎn)。

#include
uint64_tGetTimeStampUS()
{
structtimevaltv;
gettimeofday(&tv,NULL);
returntv.tv_sec*1000000+tv.tv_usec;
}
.....
voidFuncA()
{
uint64_tt1=GetTimeStampUS();
FuncB();
uint64_tt2=GetTimeStampUS();
FuncC();
uint64_tt3=GetTimeStampUS();
printf("FuncBcost:%llu,FuncCcost:%llu
",t2-t1,t3-t2);
}

這種方式最終也能解決問題,但是會(huì)有一些缺點(diǎn):

①對于大型項(xiàng)目來說,要經(jīng)過大量的【編譯,執(zhí)行驗(yàn)證,添加代碼】迭代,消耗大量時(shí)間。

②排查到問題后,需要把測試代碼刪除,下次排查時(shí)又要重新添加代碼。

③通過查看文本 log 方式分析,不直觀。 下面我們看看如何使用 bytrace 來分析問題。

OpenHarmony中使用 Bytrace

①在 BUILD.gn 中添加對 bytrace 的依賴:

external_deps=[
"bytrace_standard:bytrace_core",
]

②添加頭文件:

#include

③添加打點(diǎn)代碼:

voidFuncA(){
StartTrace(BYTRACE_TAG_GRAPHIC_AGP,"funcB");
funcB();
FinishTrace(BYTRACE_TAG_GRAPHIC_AGP);
}

代碼部分完成了,編譯更新到開發(fā)板,然后使用下面命令來抓取 log:

hdcshellbytrace-t10-b8192graphic>~/logs/log.ftrace
參數(shù)說明: -t 10:從運(yùn)行命令行開始,抓取 10 秒時(shí)間(非必要參數(shù),默認(rèn) 5 秒) -b 8192:使用 8192kb(8M) 內(nèi)存來緩存數(shù)據(jù)(非必要參數(shù),默認(rèn) 2048kb) graphic:抓取 graphic 類型的 trace,對應(yīng)上面代碼中的 BYTRACE_TAG_GRAPHIC_AGP 最后把抓取的結(jié)果保存到 log.ftrace 這個(gè)文件中(文件后綴名非限定,txt 也行),通過文本編輯器打開查看。 到目前為止,看起來跟加入時(shí)間差代碼的方式差不多,還是打點(diǎn)看 log,接著往下看。

優(yōu)化打點(diǎn)

把 bytrace 的打點(diǎn)代碼封裝起來,xtrace.h:

#include
#include"bytrace.h"

classXTrace
{
public:
XTrace(std::stringfname);
~XTrace();
};

xtrace.cpp:

XTrace::XTrace(std::stringfname)
{
StartTrace(BYTRACE_TAG_ZCAMERA,fname);
}

XTrace::~XTrace()
{
FinishTrace(BYTRACE_TAG_ZCAMERA);
}

這樣我們用起來就更方便了:

voidFuncB(){
XTracetrace1(__func__);
}

voidFuncA(){
{
XTracetrace1(__func__);
FuncB();
{
XTracetrace2(__func__);
FuncC();
}
}
函數(shù)開始,創(chuàng)建 XTrace 對象時(shí),構(gòu)造函數(shù)調(diào)用 StartTrace。函數(shù)結(jié)束或離開作用域,棧中的對象會(huì)自動(dòng)釋放,析構(gòu)函數(shù)調(diào)用 FinishTrace。 當(dāng)然這種方式也可以用于時(shí)間差打點(diǎn)。

可視化看 log

鏈接如下:

https://ui.perfetto.dev

這個(gè)網(wǎng)站需要科學(xué)方法訪問,首次訪問后有了緩存,后續(xù)就可以離線訪問了。

36739296-dc25-11ed-bfe3-dac502259ad0.png

我這邊把網(wǎng)頁保存下來了,在本地開 web 服務(wù),通過 127.0.0.1 也可以使用。 首先點(diǎn)擊左上角 Open trace file 打開 log.ftrace,右邊會(huì)顯示出函數(shù)調(diào)用的火焰圖,點(diǎn)擊其中一個(gè)函數(shù),在下方可以看到準(zhǔn)確的執(zhí)行時(shí)間。

基本操作:

鍵盤 w,s:時(shí)間軸縮放

鍵盤 a,d:左右移動(dòng)

可視化看時(shí)間軸就非常直觀了,橫條越長,消耗時(shí)間越多。

OpenHarmony 對bytrace 的集成

我們在 OpenHarmony 使用 bytrace,除了以上的便利以外,最重要的是 OpenHarmony 的代碼中已經(jīng)大量使用了 bytrace。

下面是我整理的已經(jīng)集成 bytrace 的模塊:

368b2b9a-dc25-11ed-bfe3-dac502259ad0.png

3698e0fa-dc25-11ed-bfe3-dac502259ad0.png

對于以上模塊的性能問題,我們就能直接使用對應(yīng) tag 來抓取。

其他

對于一個(gè)較大的模塊代碼,我們需要理解他的執(zhí)行流程,函數(shù)調(diào)用關(guān)系,會(huì)比較頭疼。

所以我編寫了一個(gè)腳本,掃描所有的 .cpp 文件,在所有函數(shù)開頭自動(dòng)添加:

XTracexxx(__func__);
在可視化界面分析 log,可以清晰的看到函數(shù)執(zhí)行的,不同的線程,函數(shù)的調(diào)用棧,能快速的梳理代碼的執(zhí)行流程。 第四點(diǎn)中的圖,是我對 foundation/ace/ace_engine/frameworks 這個(gè)目錄下 2000 個(gè)左右 cpp 文件中的函數(shù)全部添加 XTrace 后,得到的應(yīng)用啟動(dòng)流程火焰圖。

審核編輯:湯梓紅

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

    關(guān)注

    117

    文章

    3792

    瀏覽量

    81162
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5081

    瀏覽量

    97699
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4802

    瀏覽量

    68743
  • 編輯器
    +關(guān)注

    關(guān)注

    1

    文章

    806

    瀏覽量

    31209
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3728

    瀏覽量

    16400

原文標(biāo)題:OpenHarmony上使用火焰圖

文章出處:【微信號(hào):gh_834c4b3d87fe,微信公眾號(hào):OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    火焰探測電路

    想要做一個(gè)滅火裝置,老師要我先找一個(gè)火焰探測器的電路,然后做PCB板子,有沒有探測火焰的電路
    發(fā)表于 11-04 20:20

    honeywell火焰探測器

    和工業(yè)的燃燒裝置的燃料燃燒火焰的監(jiān)測。IRD 紅外光火焰探測器IRD 紅外光火焰探測器上海就瑞機(jī)械設(shè)備有限公司 銷售電話021-56467099*** (微信同號(hào)) 劉小姐,QQ24
    發(fā)表于 04-27 12:28

    基于單片機(jī)的防火報(bào)警系統(tǒng)_DS18B20測溫+火焰傳感器 相關(guān)資料下載

    摘要隨著現(xiàn)代家庭用火、用電量的增加,家庭火災(zāi)發(fā)生的頻率越來越高。防火報(bào)警器也隨之被廣泛應(yīng)用于各種場合。本文章所研究的無線多功能防火報(bào)警系統(tǒng)采用STC12C5A60S2為核心控制器,利用火焰傳感器
    發(fā)表于 07-01 08:23

    在stm32對于火焰模塊的應(yīng)用分析 精選資料推薦

    在stm32對于火焰模塊的應(yīng)用分析一.火焰模塊接線說明:+ 供電(3.3v) G 接地(GND)AO模擬輸入DO數(shù)字輸出以stm32f407舉例說明:AO接入:PF7DO接入:PA4(實(shí)際
    發(fā)表于 08-17 08:06

    火焰傳感器的工作原理是什么

    火焰傳感器的工作原理是什么?使用火焰傳感器有哪些注意事項(xiàng)?
    發(fā)表于 10-15 06:55

    在stm32火焰模塊有哪些應(yīng)用呢

    什么是火焰模塊?在stm32火焰模塊有哪些應(yīng)用呢?
    發(fā)表于 11-18 06:43

    Arduion UNO&Nano;火焰傳感器模塊

    說明:火焰傳感器(即紅外接收三極管)是一種對火焰特別敏感的傳感器。其利用紅外線對火焰的敏感特性,用特制的紅外線接收管來檢測火焰,然后將火焰
    發(fā)表于 04-25 16:38

    一種基于網(wǎng)絡(luò)攝像機(jī)的火焰識(shí)別方法

    介紹了一種基于網(wǎng)絡(luò)攝像機(jī)的火焰識(shí)別方法。該方法對基于MPEG4格式壓縮的流媒體進(jìn)行處理,將分幀出的BMP圖像格式的文件送入圖像處理程序,利用火焰的色度特征和頻閃特征實(shí)現(xiàn)了
    發(fā)表于 05-25 21:51 ?47次下載

    用火焰噴涂塑料材料及性能

    塑料種類很多,根據(jù)塑料受熱的性能,可分為熱塑性塑料及熱固性塑料兩大類。火焰噴涂用塑料粉末一般由塑料原料加上改性材料制成,這些改性材料,包括各種填料、顏料、流平
    發(fā)表于 12-08 16:33 ?7次下載

    火焰傳感器電路

    火焰傳感器電路,用于探測火源的具體位置在哪里。
    發(fā)表于 05-20 11:47 ?45次下載

    隧道專用火焰探測器的技術(shù)參數(shù)

    火焰探測器廣泛應(yīng)用于燃?xì)猓淼溃ぃ苯穑扑幍刃袠I(yè),探測器適用于汽油、煤油、柴油、航空汽油、液壓油、碳?xì)浠衔铮阂蚁⒕垡蚁⑻?然氣、民用燃?xì)狻⒁夯蜌狻⒓淄椤⒁彝椤⒈椤錃狻⒕凭⑺淼赖犬a(chǎn)生爆燃場所的火焰檢測。
    發(fā)表于 03-14 15:33 ?1994次閱讀

    火焰系列之使用火焰隱藏功能提高繪制精度

    我們可以看到,火焰顯示, func程序占用了近四分之一的CPU時(shí)間。但是由于我們把 func綁定在CPU0和1執(zhí)行,根據(jù)小學(xué)數(shù)學(xué)我們應(yīng)該可以計(jì)算出來 func最多占用 2/32=6.25%的時(shí)間。
    的頭像 發(fā)表于 06-23 10:15 ?2062次閱讀
    <b class='flag-5'>火焰</b><b class='flag-5'>圖</b>系列之使<b class='flag-5'>用火焰</b><b class='flag-5'>圖</b>隱藏功能提高繪制精度

    OpenHarmony生態(tài)論壇:支付終端在OpenHarmony的安全框架

    OpenHarmony生態(tài)論壇:支付終端在OpenHarmony的安全框架
    的頭像 發(fā)表于 04-25 17:29 ?1482次閱讀
    <b class='flag-5'>OpenHarmony</b>生態(tài)論壇:支付終端在<b class='flag-5'>OpenHarmony</b><b class='flag-5'>上</b>的安全框架

    OpenHarmony生態(tài)論壇:UROVO在OpenHarmony的規(guī)劃和實(shí)踐

    OpenHarmony生態(tài)論壇:UROVO在OpenHarmony的規(guī)劃和實(shí)踐
    的頭像 發(fā)表于 04-25 17:33 ?1363次閱讀
    <b class='flag-5'>OpenHarmony</b>生態(tài)論壇:UROVO在<b class='flag-5'>OpenHarmony</b><b class='flag-5'>上</b>的規(guī)劃和實(shí)踐

    使用Arthas火焰工具的Java應(yīng)用性能分析和優(yōu)化經(jīng)驗(yàn)

    分享作者在使用Arthas火焰工具進(jìn)行Java應(yīng)用性能分析和優(yōu)化的經(jīng)驗(yàn)。
    的頭像 發(fā)表于 10-28 09:27 ?305次閱讀
    使用Arthas<b class='flag-5'>火焰</b><b class='flag-5'>圖</b>工具的Java應(yīng)用性能分析和優(yōu)化經(jīng)驗(yàn)
    主站蜘蛛池模板: 父亲猜女儿在线观看| 色爰情人网站| 日本湿姝在线观看| 亚洲永久精品ww47app| YELLOW日本动漫免费动漫| 狠狠色狠狠色综合| 青草影院天堂男人久久| 伊人久久99热这里只有精品| 高h辣h双处全是肉一对一| 里番acg纲手的熟蜜姬训练场| 婷婷亚洲五月色综合久久| 最近韩国HD免费观看国语| 国产免费69成人精品视频| 欧美亚洲日韩在线在线影院| 亚洲字幕在线观看| 国产AV白丝爆浆在线播放| 美女图片131亚洲午夜| 亚洲久久少妇中文字幕| 国产 日韩 欧美 高清 亚洲| 免费人妻无码AV不卡在线| 亚洲另类欧美综合在线| 大伊人青草狠狠久久| 免费国产综合视频在线看| 亚洲视频国产| 国产精品无码AV天天爽色欲 | 国产精品99久久免费黑人人妻 | 色橹| 99re6久久热在线播放| 久久精品国产亚洲AV忘忧草蜜臀| 手机毛片免费看| 波多野结衣教师系列6| 免费精品国产人妻国语麻豆| 有人有片的观看免费视频| 国精产品999一区二区三区有限| 十二月综合缴缴情| 成人国产一区| 欧美在线看欧美视频免费| 97在线观看免费视频| 考好老师让你做一次H| 亚洲无吗视频| 寂寞少妇直播|