在没有计时的Windows上使用C ++获得以纳秒为单位的时间

时间:2012-10-18 14:07:22

标签: c++ boost time chrono

  

可能重复:
  Windows C++ nanosecond timing?

我想测量一个函数执行时间。但我使用旧的C ++(我的意思是我不能使用chrono)而且我在Windows上。我冷却找不到任何我需要的代码片段。请帮忙。

3 个答案:

答案 0 :(得分:1)

在Windows上,您可以选择使用high performance counter来获得高分辨率计时。即使是非常旧的Windows安装和旧编译器也应支持此功能。

答案 1 :(得分:0)

看看QueryPerformanceCounter 经过的时间可以用刻度获得,你知道每秒的刻度数。 它可能在大间隔时间内不可靠,因为CPU速度可能会发生变化。

答案 2 :(得分:0)

您可以使用QueryPerformanceCounter

LARGE_INTEGER liFrequency = {0};

// Get the Frequency
if(QueryPerformanceFrequency(&liFrequency))
{

    // Start Timing
    LARGE_INTEGER liStart = {0};
    if(QueryPerformanceCounter(&liStart))           
    {
        // Do Stuff

        // Get Time spent...
        LARGE_INTEGER liStop = {0};
        if(QueryPerformanceCounter(&liStop))    
        {               
            LONGLONG llMilliseconds = (LONGLONG)((liStop.QuadPart - liStart.QuadPart) * 1000.0 / liFrequency.QuadPart);
            printf("time ellapsed ms:%lld\n", llMilliseconds);
        }
    }       
}