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
提供纳秒分辨率。 (它是否真的有纳秒精度取决于你的硬件。)
我需要在 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
提供纳秒分辨率。 (它是否真的有纳秒精度取决于你的硬件。)