C:在 Linux 中测量操作时间

C: measure time of operation in Linux

我需要在 C 程序中测量时间。我用谷歌搜索并找到了两个选项:gettimeofday()time() 系统调用。例如:

#include <time.h>

...

time_t start, end;
double seconds;

time(&start);

/* Run some complex algorithm  ... */

time(&end);
seconds = difftime(end, start);

#include <sys/time.h>
...
struct timeval start, end;
double elapsed_time;

gettimeofday(&start, NULL);

/* Data processing */

gettimeofday(&end, NULL);

/* calculate time in ms. */
elapsed_time = (end.tv_sec - start.tv_sec) * 1000.0;
elapsed_time += (end.tv_usec - start.tv_usec) / 1000.0;

据我了解,第二种方法提供更高的准确性 (milli/microseconds),而第一种 returns 仅以秒为单位。我说得对吗?

是的,你的理解是正确的。

还有 clock_gettime 提供纳秒分辨率。 (它是否真的有纳秒精度取决于你的硬件。)