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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值