在linux上快速流逝的时间

9 c linux time

我正在寻找一种快速的方法来获取C中两次函数调用之间的经过时间.

我考虑使用jiffies,但它们不在用户区中.那么,我应该使用getimeofday()还是有任何最快的方法来做到这一点.

我只对两次调用之间的缩短时间感兴趣,以便在基准测试工具中使用.

Mar*_*n B 9

看一下clock_gettime,它提供了对高分辨率计时器的访问.


Chr*_*oph 9

我会通过让处理器时间clock()time.h.要获得有用的值,请通过CLOCKS_PER_SEC以下方式转换为毫秒:

clock_t start = clock();
// [...]
clock_t end = clock();
unsigned long millis = (end - start) * 1000 / CLOCKS_PER_SEC;
Run Code Online (Sandbox Code Playgroud)


小智 2

如果您使用 x86/x64 架构,并且在单个 CPU 上运行,您可能会考虑读取 CPU 上的时间戳计数器来获取周期计数。维基百科有更多信息。请注意,如果您的应用程序在多个 CPU 上运行,则此方法不太有用,因为每个 CPU 都有自己的 TSC。如果您决定要转换周期 -> 时间单位,还要注意频率缩放。