Go性能分析

golang中性能调试优化的方法包括:

  • benchmark:基准测试,对特定代码的运行时间和内存信息等进行测试
  • profiling: 程序分析,程序的运行画像,在程序执行期间,通过采样收集的数据对程序进行分析
  • Trace:跟踪,在程序执行期间,通过采集发生的事件数据对程序进行分析

    [!question]
    profiling 和 trace 有啥区别?
    Answer: profiling 分析没有时间线,trace 分析有时间线。

go中的性能分析是通过分析器(profiler)工具进行检测来实现的,称为pprof。pprof工具可以用来监测进程的运行数据,用于监控程序的性能及状况,包括以下指标。

CPU— 确定应用程序的时间花在了哪里
Goroutine— 报告正在运行的 goroutines 堆栈跟踪
Heap— 报告堆内存分配以监视当前内存使用情况并检查可能的内存泄漏
Mutex— 报告锁争情况来分析代码中互斥锁使用行为以及应用程序是否在锁定调用上花费了太多时间
Block— 显示 goroutines 阻塞等待同步原语的位置