我正在为低级 C/x64 代码编写速度优化,我想知道是否有任何标准方法可以可靠地衡量哪种选择更快。
在比较技术 A 和 B 时,我目前的技术涉及重复 A 几百次,而不是重复 B 大约相同的时间,并比较每种方法所花费的平均时间。然后,我在几十个示例中重复这一点,然后比较每种技术的均值均值。 (我对平均分钟做同样的事情)
不幸的是,这种方法似乎存在一些问题。例如,如果我考虑测试第三种技术,但实际上使用 B,则 B 的第二次运行几乎系统地更快(缓存效应?),速度足以击败 A。
还有更适合分析 JIT 代码的技术吗?
最佳答案
这个函数应该可以解决问题。
static unsigned long long rdtsctime() {
unsigned int eax, edx;
unsigned long long val;
__asm__ __volatile__("rdtsc":"=a"(eax), "=d"(edx));
val = edx;
val = val << 32;
val += eax;
return val;
}
调用一次以获取当前时间,然后再次调用并减去第一个值以获取耗时(以周期为单位)。
关于c - 编写低级代码时是否有正确的方法来衡量性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16698809/