我如何计算某个函数(重复调用)所需的毫秒数?
我想:
CTime::GetCurrentTM()
之前,
CTime::GetCurrentTM()
之后,
然后将结果插入到CTimeSpan diff = after - before
.
最后将该差异存储到对所有差异求和的全局成员,因为我想知道这个函数花费的总时间。
但它会在几秒钟内而不是几毫秒内给出答案。
MFC 是 C++,对吧?
如果是这样,您可以使用clock()
.
#include <ctime>
clock_t time1 = clock();
// do something heavy
clock_t time2 = clock();
clock_t timediff = time2 - time1;
float timediff_sec = ((float)timediff) / CLOCKS_PER_SEC;
这通常会给你毫秒精度。
如果您使用的是 MFC,最好的方法是使用 WIN API。而且由于您只是担心计算时差,因此以下功能可能非常适合您。
GetTickCount64()
直接返回系统启动后经过的毫秒数。
如果您不打算让您的系统长时间运行(精确地超过 49.7 天),稍微快一点的版本 - GetTickCount()函数
众所周知,COleDateTime 在内部以毫秒为单位工作,因为它将时间戳存储在其 m_dt 变量上,该变量是 DATE 类型,因此具有用于预期目的的分辨率。
我可以建议你把你的时间基于
DATE now= (DATE) COleDateTime::GetCurrentTime();
然后进行相应的计算。