有什么获得时间的函数,能精确到毫秒以上? clock()函数好像不太精确,还有没有其他能精确到ms的获取时间的函数? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你就搜索毫秒就找到了,给你列一个回复人: AkiraChing(水银) ( ) 信誉:100 2003-8-14 21:27:21 得分:30 QueryPerformanceCounter()这个函数返回高精确度性能计数器的值,它可以以微妙为单位计时.但是QueryPerformanceCounter()确切的精确计时的最小单位是与系统有关的,所以,必须要查询系统以得到QueryPerformanceCounter()返回的嘀哒声的频率.QueryPerformanceFrequency()提供了这个频率值,返回每秒嘀哒声的个数.计算确切的时间是从第一次调用QueryPerformanceCounter()开始的假设得到的LARGE_INTEGER 为nStartCounter,过一段时间后再次调用该函数结束的,设得到nStopCounter.两者之差除以QueryPerformanceFrequency()的频率就是开始到结束之间的秒数.由于计时函数本身要耗费很少的时间,要减去一个很少的时间开销.但一般都把这个开销忽略.公式如下: nStopCounter-nStartCounter ElapsedTime=------------------------------------ - overhead frequencydouble time=(nStopCounter.QuadPart-nStartCounter.QuadPart)/frequency.QuadPart Top 回复人: gzshd(郁闷) ( ) 信誉:100 2003-8-14 21:32:37 得分:30 使用QueryPerformanceCounter()可以得到微秒级(1/1000000秒)的时间:LONGLONG t1,t2;LONGLONG persecond;QueryPerformanceFrequency((LARGE_INTEGER *)&persecond);//询问系统一秒钟的频率QueryPerformanceCounter((LARGE_INTEGER *)&t1);//下面是你要计算运行时间的程序代码...QueryPerformanceCounter((LARGE_INTEGER *)&t2);double time=(t2-t1)/persecond;这两个函数需要mmsystem.h,并要连接winmm.lib 参考http://expert.csdn.net/Expert/topic/2147/2147520.xml?temp=9.122866E-02 看我的例子,用于获取毫秒数long GetMillisecondsCount(){ long lMillisecondsCount; SYSTEMTIME sysTime; ::GetSystemTime(&sysTime); lMillisecondsCount = sysTime.wMilliseconds + sysTime.wSecond * 1000 + sysTime.wMinute * 1000 * 60 + sysTime.wHour * 1000 * 60 * 60; return lMillisecondsCount;} SYSTEMTIME SystemTime;GetLocalTime(&SystemTime); 我添加自定义消息映射宏的时候怎么提示语法错误? 求救,关于类似矢量图的绘制工作,不知道怎么入手. VC提示 fatal error C1070:错误请问应该怎么处理。 OpenGL初学者的问题: 为什么没有显示图形 求正则表达式 串口编程如何实现收到固定字符数发送消息 CreateBitmap函数的问题,急求帮助 急!急!请问怎样才能使应用程序脱离开发环境独立运行?? 需要pop3代附件的源代码! 如何实现CString转int 怎样把CString的内容转成PTSTR? 一个令我费解的问题!
回复人: AkiraChing(水银) ( ) 信誉:100 2003-8-14 21:27:21 得分:30
QueryPerformanceCounter()这个函数返回高精确度性能计数器的值,它可以以微妙为单位计时.但是QueryPerformanceCounter()确切的精确计时的最小单位是与系统有关的,所以,必须要查询系统以得到QueryPerformanceCounter()返回的嘀哒声的频率.QueryPerformanceFrequency()提供了这个频率值,返回每秒嘀哒声的个数.计算确切的时间是从第一次调用QueryPerformanceCounter()开始的假设得到的LARGE_INTEGER 为nStartCounter,过一段时间后再次调用该函数结束的,设得到nStopCounter.两者之差除以QueryPerformanceFrequency()的频率就是开始到结束之间的秒数.由于计时函数本身要耗费很少的时间,要减去一个很少的时间开销.但一般都把这个开销忽略.公式如下:
nStopCounter-nStartCounter
ElapsedTime=------------------------------------ - overhead
frequencydouble time=(nStopCounter.QuadPart-nStartCounter.QuadPart)/frequency.QuadPart
Top
回复人: gzshd(郁闷) ( ) 信誉:100 2003-8-14 21:32:37 得分:30
使用QueryPerformanceCounter()可以得到微秒级(1/1000000秒)的时间:
LONGLONG t1,t2;
LONGLONG persecond;
QueryPerformanceFrequency((LARGE_INTEGER *)&persecond);//询问系统一秒钟的频率
QueryPerformanceCounter((LARGE_INTEGER *)&t1);
//下面是你要计算运行时间的程序代码
...
QueryPerformanceCounter((LARGE_INTEGER *)&t2);
double time=(t2-t1)/persecond;这两个函数需要mmsystem.h,并要连接winmm.lib
http://expert.csdn.net/Expert/topic/2147/2147520.xml?temp=9.122866E-02
{
long lMillisecondsCount;
SYSTEMTIME sysTime;
::GetSystemTime(&sysTime);
lMillisecondsCount = sysTime.wMilliseconds + sysTime.wSecond * 1000 + sysTime.wMinute * 1000 * 60 + sysTime.wHour * 1000 * 60 * 60;
return lMillisecondsCount;
}
GetLocalTime(&SystemTime);