1fb726d48Sopenharmony_ci# Cpuprofiler 抓取和展示说明
2fb726d48Sopenharmony_ci
3fb726d48Sopenharmony_ciCpuprofiler 模板帮助 ArkTs 开发和测试分析虚拟机层执行开销大问题,提供 Ts 层耗时长函数和阶段。
4fb726d48Sopenharmony_ci
5fb726d48Sopenharmony_ci## Cpuprofiler 的抓取
6fb726d48Sopenharmony_ci
7fb726d48Sopenharmony_ci#### Cpuprofiler 的抓取配置参数
8fb726d48Sopenharmony_ci
9fb726d48Sopenharmony_ci打开 Start Ark Ts Record 总开关下面的 Start cpu profiler 开关抓取 cpuprofiler 数据。
10fb726d48Sopenharmony_ci![GitHub Logo](../../figures/arkts/cpuprofilerconfig.jpg)
11fb726d48Sopenharmony_ci
12fb726d48Sopenharmony_ci### Cpuprofiler 展示说明
13fb726d48Sopenharmony_ci
14fb726d48Sopenharmony_ci将抓取的 cpuprofiler 文件导入到 smartperf 中,查看 Ts 层耗时长的函数和阶段。
15fb726d48Sopenharmony_ci![GitHub Logo](../../figures/arkts/cpuprofilerrow.jpg)
16fb726d48Sopenharmony_ci
17fb726d48Sopenharmony_ci### Cpuprofiler 的泳道图悬浮显示
18fb726d48Sopenharmony_ci
19fb726d48Sopenharmony_ci鼠标放到泳道图的 Slice 上会有悬浮框显示。
20fb726d48Sopenharmony_ci![GitHub Logo](../../figures/arkts/cpuprofilertip.jpg)
21fb726d48Sopenharmony_ci
22fb726d48Sopenharmony_ci-     Name : 函数名。
23fb726d48Sopenharmony_ci-     Self Time : 函数自身执行时间(不包含其调用者)。
24fb726d48Sopenharmony_ci-     Total Time : 函数自身及调用者的调用时间总和。
25fb726d48Sopenharmony_ci-     Url : 函数所在的文件名称。
26fb726d48Sopenharmony_ci
27fb726d48Sopenharmony_ci### Cpuprofiler 泳道图的点选和框选功能
28fb726d48Sopenharmony_ci
29fb726d48Sopenharmony_ci点选或者框选泳道图上函数名的 Slice,会显示 Js Profiler Statistics,Js Profiler CallTree,Js Profiler BottomUp 的 Tab 页信息。
30fb726d48Sopenharmony_ciJs Profiler Statistics 的 Tab 页显示数据的维度信息,以饼图和 Table 表的方式展示,如下图:
31fb726d48Sopenharmony_ci![GitHub Logo](../../figures/arkts/cpuprofilerselects.jpg)
32fb726d48Sopenharmony_ci![GitHub Logo](../../figures/arkts/cpuprofilerdrags.jpg)
33fb726d48Sopenharmony_ci
34fb726d48Sopenharmony_ci-     Type : 维度名称,有九大维度(NAPI、ARKUI_ENGINE、BUTLTIN、GC、AINT、CINT、AOT、RUNTIME、OTHER)。
35fb726d48Sopenharmony_ci-     Total : 时间。
36fb726d48Sopenharmony_ci-     % : 时间占比。
37fb726d48Sopenharmony_ci  Js Profiler CallTree 的 Tab 页把 name,url,depth,parent 相同的函数合并,构建成一个 top down 的树结构,以树形表格的形式显示,表格中显示函数调用关系,如下图:
38fb726d48Sopenharmony_ci  ![GitHub Logo](../../figures/arkts/cpuprofilerselectc.jpg)
39fb726d48Sopenharmony_ci  ![GitHub Logo](../../figures/arkts/cpuprofilerdragc.jpg)
40fb726d48Sopenharmony_ci-     Symbol : 函数名。
41fb726d48Sopenharmony_ci-     Self Time : 函数自身执行时间(不包含其调用者)。
42fb726d48Sopenharmony_ci-     Total Time : 函数自身及调用者的调用时间总和。
43fb726d48Sopenharmony_ci  Js Profiler BottomUp 的 Tab 页把 name,url,depth,parent 相同的函数合并,构建成一个 bottom up 的树结构,以树形表格的形式显示,只不过作为根节点的是被调用者,表格中显示函数被调用关系,如下图:
44fb726d48Sopenharmony_ci  ![GitHub Logo](../../figures/arkts/cpuprofilerselectb.jpg)
45fb726d48Sopenharmony_ci  ![GitHub Logo](../../figures/arkts/cpuprofilerdragb.jpg)
46fb726d48Sopenharmony_ci-     Symbol : 函数名。
47fb726d48Sopenharmony_ci-     Self Time : 函数自身执行时间(不包含其调用者)。
48fb726d48Sopenharmony_ci-     Total Time : 函数自身及调用者的调用时间总和。
49fb726d48Sopenharmony_ci
50fb726d48Sopenharmony_ci### Cpuprofiler 的 Heaviest Stack 功能
51fb726d48Sopenharmony_ci
52fb726d48Sopenharmony_ciJs Profiler CallTree 的 Tab 页的 Heaviest Stack 表格显示的是选中的函数的完整的调用栈。
53fb726d48Sopenharmony_ci![GitHub Logo](../../figures/arkts/cpuprofilerheavic.jpg)
54fb726d48Sopenharmony_ciJs Profiler BottomUp 的 Tab 页的 Heaviest Stack 表格显示的是选中的函数的完整的逆序调用栈。
55fb726d48Sopenharmony_ci![GitHub Logo](../../figures/arkts/cpuprofilerheavib.jpg)
56fb726d48Sopenharmony_ci
57fb726d48Sopenharmony_ci-     Symbol : 函数名。
58fb726d48Sopenharmony_ci-     Total Time : 函数自身及调用者的调用时间总和。
59fb726d48Sopenharmony_ci-     % : 总时间占比。
60