我想衡量一下,如果它只是“空仪器”,我的Pintool会如何恶化可执行文件的执行时间。
基本上在我的Pintool中我得到了一个回调函数,每次加载一个Image时都会调用它,这反过来会为特定的例程插入分析函数。
所以我正在考虑使用两种操作模式测量“空仪器”开销:
这种方法可行吗?有没有我不知道的更好的解决方案?
答案 0 :(得分:1)
Pin执行许多优化以生成非常有效的检测代码。特别是,空分析例程肯定会被内联到应用程序例程中。 C / C ++中的空函数很可能被编译为单个指令(在x86上,它是某种形式的ret
)。 Pin可能能够识别并完全删除该指令,从而使您无需检测。您可以通过比较没有任何检测的性能和使用空分析例程的性能来确定Pin是否删除ret
。如果差值为零,则Pin很可能消除了指令。虽然据我所知没有记载。