如何计算一个函数运行了多少时间。
我想知道一个函数从开始到结束用了多少时间请问有什么办法吗? 问题点数: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




