程序计时的小技巧:clock()和wtime()

来源:互联网 发布:数据库标准规范 编辑:程序博客网 时间:2024/06/14 18:56

clock()

clock()是在time.h里面的程序,通过前后两次相减得到ticktok的次数,除以CLOCKS_PER_SEC,就得到了秒数。

在计算一个程序的运行时间的时候,如果只是简单的线性执行的程序,那么使用clock() 就可以计算出程序的执行时间,但是其实这个时间是CPU的时间。如果你用clock()计算并行程序执行时间,发现它会把所有CPU的执行都叠加起来【1】。

        clock_t end_test = clock();        printf("Traing CPU time:%u\n", (unsigned)(end_train - start));        printf("Traing CPU time with second:%fs\n", (float)(end_train - start)*1.0/(CLOCKS_PER_SEC*1.0));

wtime()

在并行程序中比如OpenMP、CUDA中怎么获取时间呢,我们得到的是绝对世界时间,那么就可以比较容易获得程序执行时间【2】。

一般写法如下:

double wtime(void){     double          now_time;     struct timeval  etstart;     if (gettimeofday(&etstart, NULL) == -1)       perror("Error: calling gettimeofday() not successful.\n");     now_time = ((etstart.tv_sec) * 1000 +                  etstart.tv_usec / 1000.0);     return now_time;}

参考链接:
【1】clock(): http://blog.csdn.net/sinat_15799399/article/details/45697589
【2】wtime(): http://blog.csdn.net/lavorange/article/details/41942323

0 0
原创粉丝点击