可能重复:
Windows C++ 纳秒计时?
我想测量一个函数的执行时间。但是我使用旧的 C++(我的意思是我不能使用 chrono)而且我在 Windows 上。我找不到任何可以满足我需要的代码片段。请帮忙。
可能重复:
Windows C++ 纳秒计时?
我想测量一个函数的执行时间。但是我使用旧的 C++(我的意思是我不能使用 chrono)而且我在 Windows 上。我找不到任何可以满足我需要的代码片段。请帮忙。
在 Windows 上,您可以选择使用高性能计数器来获得高分辨率计时。即使是非常旧的 Windows 安装和旧编译器也应该支持这一点。
看一下QueryPerformanceCounter Elapsed time 可以在 ticks 中获得,并且您知道每秒的 ticks 数。由于 CPU 速度可能会发生变化,因此它在较长的时间间隔内可能不可靠。
您可以使用 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);
}
}
}