在没有Chrono的Windows上使用C ,在纳秒中获得时间

Get time in nanoseconds with C++ on windows without chrono

本文关键字:时间 Chrono Windows      更新时间:2023-10-16

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

我想测量功能执行时间。但是我使用旧的C (我的意思是我不能使用Chrono),并且在Windows上。我冷落找不到任何可以完成我需要的代码段。请帮助。

您可以使用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:%lldn", llMilliseconds);
        }
    }       
}

看一下queryperformancecounter可以在tick中获得经过的时间,您知道每秒滴答的数量。由于CPU速度可能会改变。

,它可能不可靠。