c++ - 最快的仪器分析器是什么

标签 c++ c linux x86 profiling

可用于动态分析的最快的分析器是什么(就像 gprof 所做的那样)。分析器必须是仪器分析器,或者即使它有采样分析,我也很想知道仪器分析的开销,因为采样分析可以以几乎 0% 的开销完成。

最佳答案

任何使用基于硬件的采样(通过 CPU PMSR)的分析器都将具有最小的开销(因为它读取 CPU 在硬件级别跟踪的分析数据,有关详细信息,请参阅 AMD 和 Intel 架构手册,它们应该在其中一个附录中进行深入解释。

据我所知,唯一使用这些的分析器是 VTune英特尔(不是免费的)和 CodeAnalyst对于 AMD(免费)。

接下来是基于计时器的分析器和基于事件的分析器,其中开销最小的可能是直接编译到您的代码中的分析器(CodeAnalyst 有一个基于事件的 API,VTune 也有)。 gprof也属于这一类(Clang 也有一些东西,但 IDK 如果它仍然维护......)。如果你有 VS Pro 或 Ultimate,它的 PG 编译模式会做类似的事情,尽管我从来没有发现它可以与专用的分析器套件进行比较。

最后是需要在您的代码中插入探针以确定其分析数据的那些,所有上述的以及其他免费软件分析器(如 VerySleepy)都可以做到这一点。

关于c++ - 最快的仪器分析器是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14456363/

相关文章:

c++ - SQLite C++ 按名称访问列

c++ - 鼠标悬停在 QGraphicsPixmapItem 上后 Qt 显示工具提示

c - 当 2 个字符串相等时,strcmp 返回 1,为什么?

c - 编译linux内核模块时未定义的函数

c++ - 使用 boost::thread 崩溃

c++ - 使用罗技C920采集H264到OpenCV

c++ - 数组中的重复数字

c++ - 获取当前进程的 HWND

linux - 预认证失败 : Password read interrupted while getting initial credentials

Java:Master Gain 不支持异常