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;
}

 

posted on 2014-03-31 16:32  Tongxuan  阅读(145)  评论(0)    收藏  举报