如何计算一段代码的执行时间,前面已经有很多类似的帖子,但我还是有许多地方不明白.特再向高手请教,谢谢!
1.
DWORD dwStart=GetTickCount();
这里DWORD和GetTickCount()在什么库中?
2.
float t1,t2,t;
t1=clock();
.....
t2=clock();
printf("%f\n",t2-t1);
为什么结果总为0?
3.
time_t t1,t2;
double t;
t1=time();
.....
t2=time();
t=(double)(t2-t1);
printf("%f\n",t);
为什么结果还是不正确?并且运行的次数越多时间也越长?
是不是结果应该是一个常数?

解决方案 »

  1.   

    要想使用DWORD和GetTickCount,包含windows.h就可以了。
      

  2.   

    1 楼上Maconel(Maconel)朋友已经给出正解了
    2 用下面的代码试试:
    #include <stdio.h>
    #include <time.h>void main()
    {
       float t1,t2,t;
       t1=clock();
       Sleep(1500);   //这里人为地延时1.5秒
       t2=clock();
       printf("%f\n",t2-t1);
    }
      

  3.   

    3 #include <stdio.h>
    #include <time.h>void main()
    {
    time_t t1,t2;
    double t;
    t1=time(NULL);     //这里要加上参数NULL,且time函数只支持整数的秒,即返回的值单位是秒
    Sleep(5000);
    t2=time(NULL);
    t=(double)(t2-t1);
    printf("%f\n",t);
    }
      

  4.   

    Snow_Ice11111(雪上加冰)  !    谢谢!
     再问一下:
     sleep(1500)里的1500单位是什么?是秒吗?结果是1500吗?
    为什么我的结果总不是一个确定的数呢?结果的单位是什么?
     另外如果用来测试实际的一段代码,比如for循环等,为什么
    运行一次结果就增加一点?结果是不是应该在某个值附近摆动?
    谢谢
      

  5.   

    sleep(1500)里的1500单位是什么?
    --------------------------------------------
    里面的参数单位为毫秒,让系统在这里歇1.5秒,什么也不做。后面的一问嘛,你可以把测试的代码贴上来,结合起来分析容易一些。
      

  6.   

    DWORD time=GetTickCount();
    dosomething();
    time=GetTickCount()-time; 
    float ftime=((float) time)/1000;
    ftime就是你要的时间.
      

  7.   

    返回两次GetTickCount();之差,单位毫秒
      

  8.   

    上面讲的第三种方法一般不用在计算功能简单或执行起来很快就完成了的代码所用的时间,因为它得到的结果只能精确到秒。
    piaochen_2002(飘尘)和lzzqqq(Jonersen)两位朋友说的GetTickCount()函数计算方法倒是大家常用的。