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