clock()函数好像不太精确,还有没有其他能精确到ms的获取时间的函数?

解决方案 »

  1.   

    你就搜索毫秒就找到了,给你列一个
    回复人: 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 
     
      

  2.   

    参考
    http://expert.csdn.net/Expert/topic/2147/2147520.xml?temp=9.122866E-02
      

  3.   

    看我的例子,用于获取毫秒数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;
    }
      

  4.   

    SYSTEMTIME SystemTime;
    GetLocalTime(&SystemTime);