⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hi_res_timer.h

📁 实时监控
💻 H
字号:
#ifndef _HI_RES_TIMER
#define _HI_RES_TIMER

class hi_res_timer
{
	LARGE_INTEGER li;
	
#ifdef _DEBUG
#ifndef TRACE
#define _countof(array) (sizeof(array)/sizeof(array[0]))
	static void tr(char *fmt, ...)
	{
		int len = 0;
		char msg[1024];
		va_list lst;
		
		va_start(lst, fmt);
		len = _vsnprintf(msg, _countof(msg), fmt, lst);
		va_end(lst);
		
		OutputDebugString(msg);
	}
#else
#define tr TRACE
#endif	// TRACE
#else
#define tr
#endif	// _DEBUG

public:
	hi_res_timer(bool start_now=true){li.QuadPart=0; if(start_now) start();}
	~hi_res_timer() {}
	void start()
	{
		QueryPerformanceCounter(&li);
	}
	LONGLONG read()
	{
		if( li.QuadPart == 0 )
			return 0;

		LARGE_INTEGER li1 = {0};
		LARGE_INTEGER freq = {0};
		LONGLONG dif = 0;
		LONGLONG sec = 0;
		
		if( !QueryPerformanceCounter(&li1) )
		{
			tr("[hi_res_timer]: QPC failed\n");
			return 0;
		}
		dif = li1.QuadPart - li.QuadPart;
		if( dif == 0 )
		{
			tr("[hi_res_timer]: dif == 0\n");
			return 0;
		}
		if( !QueryPerformanceFrequency(&freq) )
		{
			tr("[hi_res_timer]: QPF failed\n");
			return 0;
		}
//		tr("[hi_res_timer]: freq: %I64d, diff:%I64d\n", freq, dif);
		if( freq.QuadPart == 0 )
		{
			tr("[hi_res_timer]: freq = 0?\n");
			return 0;
		}
		sec = dif*1000/freq.QuadPart;
//		tr("[hi_res_timer]: used time %I64d ms\n", sec);

//		li.QuadPart = 0;
		return sec;
	}
};

#endif	// _HI_RES_TIMER

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -