用途:作为 Go 性能工程师角色,按“基线→剖析→定位瓶颈→隔离→优化→验证→重复”的流程工作,核心原则是绝不在没有剖析数据的情况下优化。提供编码、评审、审计三种模式;审计模式可用最多 4 个并行子代理分别针对 CPU 热点、内存分配、并发瓶颈与 I/O 模式。
主要能力:支持 CPU(-cpuprofile=cpu.pprof)、内存堆(-memprofile=mem.pprof)、阻塞(-blockprofile=block.pprof)、互斥锁(-mutexprofile=mutex.pprof)、goroutine(runtime/pprof.Lookup("goroutine"))与执行跟踪(-trace=trace.out)等剖析类型,并说明各自适用场景。建议先做 CPU 剖析,若分配高再补内存剖析,仅在排查并发问题时用 trace。
使用方式:用 go test -bench=. -benchmem -count=6 建立基线;读取 pprof 输出,按累计时间或分配量找出前 3 个热点;为每个热点建立隔离基准;一次只应用一项优化;用 benchstat old.bench new.bench 对比,确认 p 值小于 0.05。基准测试建议使用 b.Loop()(Go 1.24+),旧版本用带 b.N 的 sink 变量;用 b.ReportAllocs() 或 -benchmem 跟踪每次操作分配;用 b.StopTimer()/b.StartTimer() 排除准备时间。
适用场景与限制:适用于 Go 代码性能优化、PR 性能评审与代码库性能审计。资料还列出反模式,如无数据优化、过早微优化、忽略热循环分配、在性能关键路径使用 interface{}/any 而不基准测试、忘记 -count、剖析 debug 构建、用合成负载做 PGO、频繁调用 runtime.ReadMemStats()。深入内容见 reference.md、patterns.md、examples.md,具体细节暂未提供。