要对我的代码进行评分,我经常使用clock()
包含的clock_t
函数和<time.h>
类型。
一般:
clock_t start, end;
double time;
start=clock();
// All the things I want to bench
end=clock();
time=(end-start)/(double)CLOCKS_PER_SEC; // CLOCKS_PER_SEC = 1000000 for my ARMv7
我最近在ARMv7上使用了它,我只得到了0.01的倍数(我没有指定它,我只是将它们作为结果)。这不奇怪吗?这是通常的吗?
修改
好的,所以我看了一下我的问题。它变得奇怪,因为我的所有进程在ARMv7上似乎比在x86 3GHz处理器上更快。
使用此链接Cortex-A9 cycle counter not always incrementing,似乎Linux使用WFI指令将处理器置于睡眠模式,从而控制时钟。然后循环计数不会增加。此指令也设置为ARMv7 reference manual (C12.1.5)中所示。问题是我不知道在我的情况下我应该检查一下。
我的问题是,如何禁用此指令?知道我根本不是Linux内核超级用户!
EDIT2:
对于可能对它感兴趣的人,而不是<time.h>
中的基本函数,我使用<sys/time.h>
中的那些似乎更好的结果来获得精确的结果。查看gettimeofday()或clock_gettime()了解相关信息。