linux下,至少有两种当前时间的获取函数,
1. time(NULL)
2. gettimeofday(NULL, NULL)
这两个函数都是在用户态完成的,效率上来说,time更高;精度上来说gettimeofday()更好。
根据需要自己选择吧,测试函数如下,
#include <stdlib.h> #include <time.h> #include <stdio.h> #include <unistd.h> #include <sys/time.h> using namespace std; #define TEST_TIMES 10000000 int main() { clock_t start_time, end_time; time_t now; start_time = clock(); for( int i=0; i < TEST_TIMES; i++ ) { now = time(NULL); } end_time = clock(); printf("elapse for time(NULL) is %ld\n", (end_time-start_time)); struct timeval tv; start_time = clock(); for( int i=0; i < TEST_TIMES; i++ ) { gettimeofday( &tv, NULL ); } end_time = clock(); printf("elapse for gettimeofday is %ld\n", (end_time-start_time)); return 0; }
测试结果如下
elapse for time(NULL) is 40000
elapse for gettimeofday is 180000
后续再深入了解一下其他的获取时间函数