我想了解在Red Hat Enterprise Linux上运行程序期间执行了多少个x86-64指令。 我知道可以从valgrind获取此信息,但减速非常明显。 我还知道我们正在使用内置硬件性能计数器的Intel Core 2 Quad CPU(型号Q6700)。 但是我不知道如何从C程序中访问执行的总指令数。
我想了解在Red Hat Enterprise Linux上运行程序期间执行了多少个x86-64指令。 我知道可以从valgrind获取此信息,但减速非常明显。 我还知道我们正在使用内置硬件性能计数器的Intel Core 2 Quad CPU(型号Q6700)。 但是我不知道如何从C程序中访问执行的总指令数。
性能应用编程接口(PAPI)似乎符合您的要求。
从网站上可以了解到:
PAPI旨在为大多数主要微处理器中发现的性能计数器硬件的工具设计师和应用程序工程师提供一致的接口和方法。
来自田纳西大学创新计算实验室的博士后研究员Vince Weaver进行了一些与PAPI相关的工作。他在UTK的网页上列出的研究看起来可以提供更多信息。
static __inline__ unsigned long long rdtsc(void)
{
unsigned long long int x;
__asm__ volatile (".byte 0x0f, 0x31" : "=A" (x));
return x;
}