现在的做法是在需要测量的部分前后使用函数 clock_gettime() 得到各自的时间,然后相减得到运行时间。就是照搬了QNX的例子。
具体如下:
struct timespec start, stop;
double accum;
if( clock_gettime( CLOCK_REALTIME, &start) == -1 ) {
perror( "clock gettime" );
return EXIT_FAILURE;
}
......
if( clock_gettime( CLOCK_REALTIME, &stop) == -1 ) {
perror( "clock gettime" );
return EXIT_FAILURE;
}
accum = ( stop.tv_sec - start.tv_sec )
+ (double)( stop.tv_nsec - start.tv_nsec )
/ (double)1000000000L;
printf( "%lf\n", accum );
return EXIT_SUCCESS;
不知道结果是否准确?(其实只要能精确到 us 就可以了,虽然貌似可以精确到 ns 的样子。。。)
我做了简但的测试,使用函数 memcpy() ,从内存中的一个buffer把 100k 的数据复制到另一个buffer,多次运行得到2种结果, 0.000000 和 0.001000。
为什么会有差距这么大的2种结果呢?