Hum*_*ger 5 c cpu profiling x86-64 cpu-usage
我使用以下代码来分析我的操作,以优化我的函数中的cpu周期.
static __inline__ unsigned long GetCC(void)
{
unsigned a, d;
asm volatile("rdtsc" : "=a" (a), "=d" (d));
return ((unsigned long)a) | (((unsigned long)d) << 32);
}
Run Code Online (Sandbox Code Playgroud)
我不认为这是最好的,因为即使连续两次通话也给了我"33"的差异.有什么建议 ?
我个人认为rdtsc指令很棒,可用于各种任务.我不认为使用cpuid是准备rdtsc所必需的.以下是我对rdtsc的理解:
至于时间戳计数器准确的问题我会说假设不同核心上的tsc是同步的(这是常态),在低活动期间存在CPU节流的问题以减少能量消耗.测试时始终可以禁用功能.如果您在同一处理器上执行1 GHz或10 Mhz的指令,则经过的周期计数将是相同的,即使前者在1%的时间内完成后续计算.