Chrome://tracing
可视化
- Chrome浏览器
chrome::tracing
, 缺点:只会自动区分完全包含的时间块,但是对时间范围部分重叠的时间块会重合在一起看不清 - 优点:对时间范围部分重叠的时间块也会自动展开
- speedscope劣势:Thread会分页显示
- perfetto十分推荐:有彩色,查找很好用。
数据格式
主要的格式是事件追踪格式,即 Trace Event Format
。它本质上是一个包含不同事件(threads, processes, events)的 JSON 文件。你需要将这些事件按时间点记录下来,并按照以下结构组织:
1 | { |
关键字段说明
- 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),这是一个可选的字段,可以包含其他任何自定义信息。