Performance counter in Windows
比较方便的性能计数方式,重点是API设计的简单和可读性。
#pragma once
#include <chrono>
#include <windows.h>
using namespace std;
using namespace chrono;
high_resolution_clock::time_point time_now()
{
return high_resolution_clock::now();
}
float time_elapsed(high_resolution_clock::time_point const & start)
{
return duration_cast<duration<float>>(high_resolution_clock::now() - start).count();
}
LARGE_INTEGER precision_time_now()
{
LARGE_INTEGER start;
::QueryPerformanceCounter(&start);
return start;
}
double precision_time_elapsed_seconds(LARGE_INTEGER start)
{
LARGE_INTEGER now = precision_time_now();
LARGE_INTEGER frequency;
::QueryPerformanceFrequency(&frequency);
return static_cast<double>(now.QuadPart - start.QuadPart) / frequency.QuadPart;
}
double precision_time_elapsed_million_seconds(LARGE_INTEGER start)
{
LARGE_INTEGER now = precision_time_now();
LARGE_INTEGER frequency;
::QueryPerformanceFrequency(&frequency);
return 1000.f * static_cast<double>(now.QuadPart - start.QuadPart) / frequency.QuadPart;
}
浙公网安备 33010602011771号