【发布时间】:2014-06-12 04:50:23
【问题描述】:
我想分析 C++ 程序中特定例程的缓存未命中(率)。我知道一些分析工具,但它们似乎不太让我满意。
据我所知:
gprof 可以生成调用图和代码覆盖率,但不包括缓存未命中分析。
valgrind (cachegrind) 可以分析缓存未命中,但似乎只适用于整个应用程序。
oprofile 确实具有基于符号的输出。但我有点困惑:假设过程 A() 调用 B()(可能是库或系统调用),并且 B() 内部发生缓存未命中,是否归因于 A()?毕竟我想在 A() 的整个执行过程中计算缓存未命中。
最后一个问题。 OProfile 需要为每个新会话重新启动守护程序。假设我想通过一系列不同的参数和输入来分析我的程序。我怎样才能以自动化的方式做到这一点?有没有办法像在代码中插入 gettimeofday() 来获取缓存统计信息?
【问题讨论】: