是否可以将clock()用于ARMv7?

时间:2016-04-01 10:26:31

标签: linux-kernel armv7

要对我的代码进行评分,我经常使用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()了解相关信息。

0 个答案:

没有答案