我想通过读取路径上不同点的性能计数器来评测应用程序的critical路径。
我遇到了libperf
,它提供了一个相当整洁的C api。然而,上一次活动是在3年前。
我也知道PAPI
。这一点正在积极发展之中。
- 还有其他图书馆我应该知道吗
- 有人能对使用其中一种或另一种提供任何见解吗
- 有将这些集成到应用程序代码中的教程/介绍吗
我同时使用了PAPI(在Solaris上)和perf(在Linux上),发现记录整个程序运行并使用"perf-annotte"查看关键路径的运行情况要容易得多,而不是只测量关键路径。这是一种不同的方法,但对我来说效果很好。
此外,正如有人在评论中提到的那样,如果你是基于x86的,那么还有vTune。我自己从来没有用过。
有几个选项,其中包括:
- JEvents
- libpfc
- 英特尔PCM
- likwid
- 直接使用
perf_event_open
我将在回答一个相关问题时更详细地介绍这些问题。
看看http://software.intel.com/en-us/articles/intel-performance-counter-monitor-a-better-way-to-measure-cpu-utilization?page=8
不过,VTune是专有的,如果您愿意,它可以达到目的。试试它的30天试用。
perfmon和perfctr可以用于分析程序的各个部分,但必须包含在代码本身中。