gprof 是否适合分析长 运行 程序?为什么或者为什么不?

Is gprof suitable for analysis of long running programs? Why or why not?

我知道 gprof 在打印平面轮廓之前有一个样本计数频率。根据样本计数的频率,我的判断是程序运行时间越长,为分析收集的样本越多,因此数据越好。但我不太确定这是否属实,以及长 运行 程序是否适合在 gprof 上进行概要分析。

任何意见都会很有帮助。

是的,gprof 有优势(在任何平台上都可用) 然而,这些缺点使他不适合更复杂的程序。 1)检测增加函数调用开销 2)无法在共享库中配置文件代码 3)仅分析主线程 4)不提供有关缓存未命中的信息 5) 不给 flops/s 6)不分析循环 等等

我的回答对我来说似乎是最合乎逻辑的:

如果程序很长 运行ning 并且我们只对分析感兴趣,那么 grpof 似乎是一个合适的选择 工具,因为 gprof 依赖于样本收集的频率,默认情况下为 100 Hz。如果 运行gprof的ning时间很短,如果在这么短的时间内调用了很多函数,那么 很可能用于分析的样本量非常小,因此分析的样本 功能不可靠。否则,分析的检测开销会增加 运行 程序时间和总执行时间可能无法反映实际的 运行 时间 应用程序,可以简单地通过调用由 操作系统内核。