mfc计算运算时间
在mfc里面有一个几分钟的运算,我想计算它的运算时间。精确到秒就可以。把函数的详细用法告诉我,尤其是时间的格式。...
在mfc里面有一个几分钟的运算,我想计算它的运算时间。精确到秒就可以。把函数的详细用法告诉我,尤其是时间的格式。
展开
4个回答
展开全部
计算前和计算后分别获取当前时间,然后用时间相减
inline __int64 TimeDiff(SYSTEMTIME left,SYSTEMTIME right)
{
CTime tmLeft(left.wYear,left.wMonth,left.wDay,0,0,0);
CTime tmRight(left.wYear,left.wMonth,left.wDay,0,0,0);
CTimeSpan sp;
sp = tmLeft - tmRight;//计算日期比较麻烦,就交给MFC去做吧
long lLMinllis = (left.wHour*3600 + left.wMinute*60 + left.wSecond)*1000 + left.wMilliseconds;
long lRMinllis = (right.wHour*3600 + right.wMinute*60 + right.wSecond)*1000 + right.wMilliseconds;
return (__int64)sp.GetDays()*86400000 + (lLMinllis - lRMinllis);
}
inline __int64 TimeDiff(SYSTEMTIME left,SYSTEMTIME right)
{
CTime tmLeft(left.wYear,left.wMonth,left.wDay,0,0,0);
CTime tmRight(left.wYear,left.wMonth,left.wDay,0,0,0);
CTimeSpan sp;
sp = tmLeft - tmRight;//计算日期比较麻烦,就交给MFC去做吧
long lLMinllis = (left.wHour*3600 + left.wMinute*60 + left.wSecond)*1000 + left.wMilliseconds;
long lRMinllis = (right.wHour*3600 + right.wMinute*60 + right.wSecond)*1000 + right.wMilliseconds;
return (__int64)sp.GetDays()*86400000 + (lLMinllis - lRMinllis);
}
参考资料: http://old.blog.edu.cn/user2/accesscn/archives/2006/1196261.shtml
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
法一 利用GetTickCount数 long t1=GetTickCount();//程序段开始前取得系统运行时间(ms)
。。。。。。//to do sth
long t2=GetTickCount();//程序段结束后取得系统运行时间(ms)
cout<<t2-t1<<endl;//前后之差即程序运行时间
。。。
法二 利用C/C++计时函数
函数/参数说明
clock()
C/C++计时函数,与其相关的数据类型是clock_t
返回:从"此程序进程开启"到"程序中调用clock()函数"之间CPU计时单元数,MSDN中称挂钟时间(wal-clock)
clock_t
用来保存时间的数据类型,在time.h中定义:typedef long clock_t; 为长整型
CLOCKS_PER_SEC
用来表示一秒钟会有多少个时钟计时单元,在time.h中定义:#define CLOCKS_PER_SEC ((clock_t)1000) 法三 利用CTime类 获取系统时间CString str;
//获取系统时间
CTime tm;
tm=CTime::GetCurrentTime();
str=tm.Format("现在时间是%Y年%m月%d日 %X");
AfxMessageBox(str);
法四 利用GetLocalTime类 获取系统时间
。。。。。。//to do sth
long t2=GetTickCount();//程序段结束后取得系统运行时间(ms)
cout<<t2-t1<<endl;//前后之差即程序运行时间
。。。
法二 利用C/C++计时函数
函数/参数说明
clock()
C/C++计时函数,与其相关的数据类型是clock_t
返回:从"此程序进程开启"到"程序中调用clock()函数"之间CPU计时单元数,MSDN中称挂钟时间(wal-clock)
clock_t
用来保存时间的数据类型,在time.h中定义:typedef long clock_t; 为长整型
CLOCKS_PER_SEC
用来表示一秒钟会有多少个时钟计时单元,在time.h中定义:#define CLOCKS_PER_SEC ((clock_t)1000) 法三 利用CTime类 获取系统时间CString str;
//获取系统时间
CTime tm;
tm=CTime::GetCurrentTime();
str=tm.Format("现在时间是%Y年%m月%d日 %X");
AfxMessageBox(str);
法四 利用GetLocalTime类 获取系统时间
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
计算前和计算后分别获取当前时间,然后用时间相减
inline __int64 TimeDiff(SYSTEMTIME left,SYSTEMTIME right)
{
CTime tmLeft(left.wYear,left.wMonth,left.wDay,0,0,0);
CTime tmRight(left.wYear,left.wMonth,left.wDay,0,0,0);
CTimeSpan sp;
sp = tmLeft - tmRight;//计算日期比较麻烦,就交给MFC去做吧
long lLMinllis = (left.wHour*3600 + left.wMinute*60 + left.wSecond)*1000 + left.wMilliseconds;
long lRMinllis = (right.wHour*3600 + right.wMinute*60 + right.wSecond)*1000 + right.wMilliseconds;
return (__int64)sp.GetDays()*86400000 + (lLMinllis - lRMinllis);
}
inline __int64 TimeDiff(SYSTEMTIME left,SYSTEMTIME right)
{
CTime tmLeft(left.wYear,left.wMonth,left.wDay,0,0,0);
CTime tmRight(left.wYear,left.wMonth,left.wDay,0,0,0);
CTimeSpan sp;
sp = tmLeft - tmRight;//计算日期比较麻烦,就交给MFC去做吧
long lLMinllis = (left.wHour*3600 + left.wMinute*60 + left.wSecond)*1000 + left.wMilliseconds;
long lRMinllis = (right.wHour*3600 + right.wMinute*60 + right.wSecond)*1000 + right.wMilliseconds;
return (__int64)sp.GetDays()*86400000 + (lLMinllis - lRMinllis);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以定义2个时间变量
time_t start,end;
start=time(NULL);
{
你要就算的程序代码
}
end=time(NULL);
end-start 就是你要的 也是精确到秒
---------------------------------------
不过一般的小程序都是不到1秒的,最好用那种精确到毫秒的函数比较直观点
clock_t start,end;
start=clock();
{
你要就算的程序代码
}
end=clock();
(double)(finish - start) / CLOCKS_PER_SEC
就是你要的 是精确到毫秒
还有疑问请参考资料
time_t start,end;
start=time(NULL);
{
你要就算的程序代码
}
end=time(NULL);
end-start 就是你要的 也是精确到秒
---------------------------------------
不过一般的小程序都是不到1秒的,最好用那种精确到毫秒的函数比较直观点
clock_t start,end;
start=clock();
{
你要就算的程序代码
}
end=clock();
(double)(finish - start) / CLOCKS_PER_SEC
就是你要的 是精确到毫秒
还有疑问请参考资料
参考资料: http://blog.csdn.net/zhanghefu/archive/2008/06/06/2517216.aspx
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询