mfc计算运算时间

在mfc里面有一个几分钟的运算,我想计算它的运算时间。精确到秒就可以。把函数的详细用法告诉我,尤其是时间的格式。... 在mfc里面有一个几分钟的运算,我想计算它的运算时间。精确到秒就可以。把函数的详细用法告诉我,尤其是时间的格式。 展开
 我来答
yelaizuozuo
2009-01-02 · TA获得超过1631个赞
知道大有可为答主
回答量:802
采纳率:0%
帮助的人:356万
展开全部
计算前和计算后分别获取当前时间,然后用时间相减

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

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友cc44bde
2015-06-23 · TA获得超过5536个赞
知道小有建树答主
回答量:364
采纳率:100%
帮助的人:183万
展开全部
法一 利用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类 获取系统时间
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
推荐于2021-01-19 · TA获得超过8750个赞
知道大有可为答主
回答量:4887
采纳率:18%
帮助的人:1224万
展开全部
计算前和计算后分别获取当前时间,然后用时间相减

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);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
茁耘稳b
2009-01-07 · 超过17用户采纳过TA的回答
知道答主
回答量:89
采纳率:0%
帮助的人:0
展开全部
可以定义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
就是你要的 是精确到毫秒

还有疑问请参考资料

参考资料: http://blog.csdn.net/zhanghefu/archive/2008/06/06/2517216.aspx

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式