Chrome://tracing
导言
chrome://tracing
是个格式简单的可视化方法和格式,可以清晰的对比每个过程/方块的(个数、大小、顺序),来快速找到热点。
可视化¶
- Chrome浏览器
chrome::tracing
, 缺点:只会自动区分完全包含的时间块,但是对时间范围部分重叠的时间块会重合在一起看不清 - 优点:对时间范围部分重叠的时间块也会自动展开
- speedscope劣势:Thread会分页显示
- perfetto十分推荐:有彩色,查找很好用。
数据格式¶
主要的格式是事件追踪格式,即 Trace Event Format
。它本质上是一个包含不同事件(threads, processes, events)的 JSON 文件。你需要将这些事件按时间点记录下来,并按照以下结构组织:
{
"traceEvents": [
{
"pid": 1,
"tid": 100,
"ts": 123456789,
"ph": "X",
"name": "Event 1",
"dur": 1000,
"args": {
"info": "additional data"
}
},
{
"pid": 1,
"tid": 101,
"ts": 123456800,
"ph": "B",
"name": "Event 2",
"args": {
"info": "additional data"
}
},
{
"pid": 1,
"tid": 101,
"ts": 123456900,
"ph": "E",
"name": "Event 2",
"args": {
"info": "additional data"
}
}
]
}
关键字段说明¶
- pid: 进程 ID (Process ID),表示事件所属的进程。可以是任意整数。
- tid: 线程 ID (Thread ID),表示事件所属的线程。可以是任意整数。
- ts: 时间戳 (Timestamp),以微秒为单位,表示事件发生的时间。
- ph: 事件类型 (Phase),标记事件的种类。常见的类型有:
"B"
:开始事件 (Begin),表示某一事件的开始。"E"
:结束事件 (End),表示某一事件的结束。"X"
:完整事件 (Complete),包含了持续时间(dur
字段),表示某个事件从开始到结束。- name: 事件名称,用于描述事件类型或任务。
- dur: 持续时间 (Duration),以微秒为单位,表示该事件的持续时间(仅适用于
"X"
类型的事件)。 - args: 额外信息 (Arguments),这是一个可选的字段,可以包含其他任何自定义信息。