c++ - 英特尔引脚 : measuring empty instrumentation overhead

标签 c++ profiling intel-pin

我想衡量我的 Pintool 在执行“空检测”的情况下如何恶化可执行文件的执行时间。

基本上在我的 Pintool 中,我得到了一个回调,每次加载图像时都会调用该回调,这反过来会为特定例程插入分析函数。

所以我在考虑使用两种操作模式来测量“空仪器”开销:

  1. 有一个空的图像回调函数,在加载每个图像时调用,而不是普通的回调函数
  2. 有空例程分析函数可以调用,而不是普通函数

这种方法可行吗?是否有我不知道的更好的解决方案?

最佳答案

Pin 执行了大量优化以生成非常高效的检测代码。特别是,空分析例程肯定会内联到应用程序例程中。 C/C++ 中的空函数很可能会被编译为一条指令(在 x86 上,它是某种形式的 ret)。 Pin 可能能够识别并完全删除该指令,从而使您的检测为零。您可以通过比较没有任何检测的性能和有空分析例程的性能来确定 Pin 是否删除了 ret。如果差异为零,则很有可能 Pin 删除了指令。尽管据我所知这还没有记录。

关于c++ - 英特尔引脚 : measuring empty instrumentation overhead,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50610477/

相关文章:

c++ - glutswapbuffers 实际上做了什么?

c++ - i7 处理器与 windows8 操作系统的多线程问题

android - 将 Android 分析监视器集成到 Appium 脚本中

node.js - 用于 NodeJS CPU 分析的 Chrome DevTools 中缺少 Record 按钮

c++ - 英特尔引脚 : correctly continuing execution after RECEIVED_ACCESS_FAULT exception

c++ - 使用 AVX 后 SSE 运行缓慢

c++ - 如何优化此数学运算以提高速度

profiling - 如何使用 nimprof?

linux - 固定工具中缺少共享对象

c++ - Intel Pin 跟踪特定函数调用