首页 > 编程相关 > 计算程序运行时间 C语言 clock()函数版

计算程序运行时间 C语言 clock()函数版

2008年10月16日 22:29 Slyar 发表评论 阅读评论

文章作者:Slyar 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。

自己没事可以看看程序的运行时间,第一个想到的还是以前会的clock() ,先把代码扔这。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
clock_t begin, end;
double  cost;
begin = clock();
/* 程序代码 */
end = clock();
cost = (double)(end - begin) / CLOCKS_PER_SEC;
printf("%lf seconds\n", cost);
system("pause");
return 0;
}

这个函数返回开启进程和调用clock()之间的的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock),每过千分之一秒(1毫秒),调用clock()函数返回的值就加1。

但是是我感觉这段程序有两个问题,很不爽。第一是精度,只能精确到1ms,低于1ms的程序全部输出0ms,因为WinNT的时间精度最小是1ms;第二是准确度,printf()的速度太快了,基本上和clock()的速度一样,所以误差很大很大。。。

不晓得在Win下怎么才能提高计算精度。。。

分类: 编程相关 标签: ,
  1. 匿名
    2009年7月10日17:52 | #1

    重复N次,总计时/N

  2. 2008年10月20日19:35 | #2

    秒针需要长浮点型么?

  3. 2008年10月18日23:07 | #3

    不,有更精确的,查查msdn把,精确到每一个时钟周期

    Slyar 回复:

    郁闷,我看过,没找到。就2个可以用。

    GetTickCount,10+ms

    timeGetTime,1ms

  4. 2008年10月17日23:40 | #4

    Windows API.

    Slyar 回复:

    API貌似最小也是ms啊。。。

  5. 2008年10月17日16:33 | #5

    好的 呵呵

  6. 2008年10月17日16:15 | #6

    以前你加我了,现在没了

    Slyar 回复:

    在链接页面。

  7. 2008年10月17日16:12 | #7

    博主能否加我连接?

    Slyar 回复:

    一直都加着的。

bnuep:0801010047