跳转至

Chrome://tracing

导言

chrome://tracing是个格式简单的可视化方法和格式,可以清晰的对比每个过程/方块的(个数、大小、顺序),来快速找到热点。

可视化

  1. Chrome浏览器chrome::tracing, 缺点:只会自动区分完全包含的时间块,但是对时间范围部分重叠的时间块会重合在一起看不清
  2. 优点:对时间范围部分重叠的时间块也会自动展开
    1. speedscope劣势:Thread会分页显示
    2. 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),这是一个可选的字段,可以包含其他任何自定义信息。

参考文献

评论