![哪些工具可用于微基准测试?](https://linux22.com/image/228470/%E5%93%AA%E4%BA%9B%E5%B7%A5%E5%85%B7%E5%8F%AF%E7%94%A8%E4%BA%8E%E5%BE%AE%E5%9F%BA%E5%87%86%E6%B5%8B%E8%AF%95%EF%BC%9F.png)
我不确定使用哪个工具对 C 程序进行微基准测试。
我想测量两者:
- 内存使用情况,RSS(驻留集大小)
- CPU周期
我确实使用perf record -g
并perf script
通过管道传输到 awk 脚本中。这有助于查找内存使用情况,但 CPU 周期不准确,因为perf record
通过采样获取 CPU 周期。perf stat
是准确的,但显然没有给出每个功能的统计数据。 perf_event 库似乎有非常丰富的文档,对于简单的基准测试来说是一项艰巨的任务。
简要浏览了一下:
- 系统点击
- DTrace
- LTTng
- 性能工具
- 利克维德
- 帕皮伊
这看起来是不错的、有据可查的工具。
您建议最关注什么?或者还有其他建议吗?
感谢您的时间。
答案1
您正在编写自己的 C 代码,因此您只需调用getrusage() 获取您提到的统计数据。在感兴趣的基准测试代码之前和之后调用它。
系统调用有开销。您可能希望基准测试代码能够循环多次迭代以进行单次测量。如果多次运行相同的代码会产生高度可变的计时,则说明您的循环计数器设置得太低。