在C/C++中比较常用的统计程序运行的时间是使用clock()函数来实现, #include <time.h> ,实现方法如下:
clock_t start_time, end_time;
start_time = clock();
....//Do Something
end_time = clock();
// Get the elapsed millisecond time
double elapsed_time = (start_time - end_time)*1000/CLOCKS_PER_SEC;
这段程序在Windows上运行良好,但是在MacOS上时间计算的偏差非常大,不能使用(实际是27秒, 在MacOS上只有346 ms了).
调查之后发现MacOS上使用gettimeofday()才能准确的获得时间差.
具体用法如下:
#include <sys/time.h>
struct time_val start_time, end_time;
gettimeofday(&start_time,NULL);
//Do something
gettimeofday(&end_time,NULL);
//
double elapsed_time_msec = (end_time.tv_sec - start_time.tv_sec)*1000 + (end_time.tv_usec - start_time.tv_usec)/1000;