【发布时间】:2018-09-15 15:04:00
【问题描述】:
我在分析本机代码方面的有限经验大部分是在 GPU 上而不是在 CPU 上,但我将来会看到一些 CPU 分析...
现在,我刚刚阅读了这篇博文:
How profilers lie: The case of gprof and KCacheGrind
关于探查器如何测量以及它们向您显示的内容,如果您有兴趣区分不同的调用路径和在其中花费的时间,这可能不是您所期望的。
我的问题是:今天(5 年后)是否仍然如此?也就是说,sampling 分析器(即那些不会严重减慢执行速度的分析器)是否仍然像 gprof 过去那样(或在没有 --separate-callers=N 的情况下调用grind)?或者现在的分析器是否习惯于在采样时记录整个调用堆栈?
【问题讨论】:
-
您的问题有点令人困惑,因为链接问题中的第二个示例涉及 callgrind,它绝对不是采样分析器:它在虚拟机下运行您的进程并且可以记录有关每条指令/基本块/功能/任何内容的信息。在这样做的过程中,它将一切都减慢了一个数量级,因此引入了自己的一系列问题和扭曲。但是,它不是采样分析器。
标签: performance profiling performance-testing sampling gprof