evan

For the lasting love

导航

< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8

统计

linux下计算程序运行时间

这里介绍一下我在项目测试中用到的两种方法
1 clock()

复制代码
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <time.h>
4
5  int main()
6 {
7    clock_t begin, end;
8    double cost;
9    begin = clock();
10    /* 程序代码 */
11    end = clock();
12    cost = (double)(end - begin) / CLOCKS_PER_SEC;
13    printf("%lf seconds\n", cost);
14   
15    return 0;
16 }
复制代码
这个函数返回开启进程和调用clock()之间的的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock),每过千分之一秒(1毫秒),调用clock()函数返回的值就加1。

两个缺点:第一是精度,只能精确到1ms,低于1ms的程序全部输出0ms,因为WinNT的时间精度最小是1ms;第二是准确度,printf()的速度太快了,基本上和clock()的速度一样,所以误差很大
2 gettimeofday()

复制代码
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <sys/time.h>
4
5 /*struct timeval说明
6 strut timeval { . {! K( J, c4 ?' }$ _+ L& B0 P
7 long tv_sec; /* 秒数 */ ( r* A) \" h& k( j. a2 F4 R
8 long tv_usec; /* 微秒数 */
9 ( G# ~7 l7 i; I7 t% ~( `};*/
10 int main()
11 {
12    struct timeval tpstart,tpend;
13    float timeuse;
14    gettimeofday(&tpstart,NULL);
15    /* 程序代码 */
16    gettimeofday(&tpend,NULL);
17    timeuse=1000000*(tpend.tv_sec-tpstart.tv_sec)+tpend.tv_usec-tpstart.tv_usec;
18    timeuse/=1000000;
19    printf("Used Time:%f\n",timeuse);
20    return 0;
21 }
复制代码

 

posted on   evander  阅读(4432)  评论(0编辑  收藏  举报

点击右上角即可分享
微信分享提示