CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

如何计算一个函数运行了多少时间。

楼主joer986565()2003-11-04 13:54:08 在 VC/MFC / 基础类 提问

我想知道一个函数从开始到结束用了多少时间请问有什么办法吗? 问题点数:20、回复次数:15Top

1 楼zhouqingyuan(浪帆)回复于 2003-11-04 14:06:21 得分 2

clock_t   start,finish,duration;  
  start=clock();//函数开始时  
   
   
   
   
   
  finish=clock();//函数结束时  
  duration=finish-start;就可以得出运行多厂时间了。Top

2 楼SeainBlue(爱海)回复于 2003-11-04 14:08:56 得分 1

设置变量CTime   timeStart   ,   timeEnd   ;    
  在函数执行之前加入:  
      timeStart   =CTime::GetCurrentTime()   ;    
   
  在函数执行之后加入:  
      timeEnd       =CTime::GetCurrentTime()   ;    
   
  最后CTimeSpan   timeRun   =   timeEnd   -   timeStart   ;    
  printf("执行时间     %d:%d:%d"   timeRun.GetHours(),timeRun.GetMinutes(),timeRun.GetSeconds())   ;Top

3 楼reviver(reviver)回复于 2003-11-04 14:21:52 得分 1

Build->Profile,选择相应测试,先要在Project设置里打开Enable   ProfilingTop

4 楼joer986565()回复于 2003-11-04 14:36:58 得分 0

谢谢回答,还有其它的方法吗?Top

5 楼kingxu(徐英)回复于 2003-11-04 14:56:22 得分 3

如果时间精度要求不高,用上面的函数也就够了,如果要求很高,就用下面这个函数  
  GetTickCount()  
   
   
  DWORD   dwStart   =   GetTickCount();  
   
  //   Stop   if   this   has   taken   too   long  
  if(   GetTickCount()   -   dwStart   >=   TIMELIMIT   )  
          Cancel();Top

6 楼hardstudylulin(思过崖)回复于 2003-11-04 15:06:35 得分 4

double   sTime,eTime,time;  
  sTime=GetTickCount();  
  your   function;  
  eTime=GetTickCount();  
  time=eTime-sTimeTop

7 楼joer986565()回复于 2003-11-04 15:10:54 得分 0

我自己用了COleDateTime但是这个只支持到秒,有没有支持到毫秒的呢?Top

8 楼panzhaoping(潘赵平)回复于 2003-11-04 16:57:21 得分 0

那你用unixTop

9 楼fengge8ylf(秀视工作室,承接P2P项目)回复于 2003-11-04 17:13:33 得分 1

看《COM+编程指南》中的例子Top

10 楼joer986565()回复于 2003-11-04 18:07:48 得分 0

用GetTickCount()函数可以谢谢回答。  
  我用%f输出给出的是1331.0000的数,应该是1.3秒吧!Top

11 楼ljzcom()回复于 2003-11-04 18:28:10 得分 1

yesTop

12 楼rushinger(阮祥哥)回复于 2003-11-04 19:34:42 得分 1

C语言中这么用:  
  #include<stdio.h>  
  #include<time.h>  
  void   main()  
  {        
          time_t   overTime;  
          time_t   startTime;  
   
          time(&startTime);//起始时间  
          yourFunction();//你的函数  
          time(&overTime);//结束时间  
   
          printf("The   function   use   %d   secend.\n",(overTime-startTime)%1000);  
  }  
  Top

13 楼rushinger(阮祥哥)回复于 2003-11-04 19:36:16 得分 1

写错了一点:应该是(overTime-startTime)/1000。Top

14 楼jarrywan(阿宝)回复于 2003-11-04 19:41:26 得分 1

CTime   timestart;CTime   timeend;  
  timestart   =   CTime::GetCurrentTime();  
  TRACE("START   TIME   :%s\n",timestart.Format("%H:%M:%S"));  
                    …………………………………………………………  
                    函数内容  
                    …………………………………………………………  
                    timeend   =   CTime::GetCurrentTime();  
  TRACE("END   TIME   :%s   \n",timeend.Format("%H:%M:%S"));Top

15 楼yaoming2002(飞雪连天)回复于 2003-11-04 19:46:34 得分 4

我用了GetTickCount();  
  在你想测试的代码前使用这个函数,赋给一个整型值  
  在代码结束后,再使用一次计算差值  
  差值是以毫秒计算的,设为x  
  x/1000为运行的秒数  
  x%1000可以得出另外的毫秒数。Top

相关问题

  • C中是否有计算程序运行多长“时间”跟使用多少“内存”的函数?
  • 求一函数来计算时间
  • VB中,如何能计算出一个程序运行所需时间,要求精确到微秒.我现在用TIME函数只能精确到秒.
  • 计算bessel函数,
  • 如何测一个过程或函数的运行时间?
  • 如何使这个函数每隔一定时间运行?
  • 如何得知一个函数的精确的运行时间
  • 有没有测量程序运行时间的函数?急问!
  • 如何中断一个长时间运行的函数?
  • 怎样计算一个函数执行所需的时间?

关键词

  • 函数
  • 执行
  • start
  • timeend
  • timestart
  • timerun
  • gettickcount
  • ctime
  • 运行
  • getcurrenttime

得分解答快速导航

  • 帖主:joer986565
  • zhouqingyuan
  • SeainBlue
  • reviver
  • kingxu
  • hardstudylulin
  • fengge8ylf
  • ljzcom
  • rushinger
  • rushinger
  • jarrywan
  • yaoming2002

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo