1

可能重复:
Windows C++ 纳秒计时?

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

4

3 回答 3

1

在 Windows 上,您可以选择使用高性能计数器来获得高分辨率计时。即使是非常旧的 Windows 安装和旧编译器也应该支持这一点。

于 2012-10-18T14:11:48.673 回答
0

看一下QueryPerformanceCounter Elapsed time 可以在 ticks 中获得,并且您知道每秒的 ticks 数。由于 CPU 速度可能会发生变化,因此它在较长的时间间隔内可能不可靠。

于 2012-10-18T14:17:55.113 回答
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);
        }
    }       
}
于 2012-10-18T14:19:18.670 回答