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

📄 o_time.h

📁 用匈牙利算法解决二部图的最优匹配问题,可用于多任务的指派问题的解决.
💻 H
字号:
/*
  计时类,用于测量运行时间
  作者:sf.tk
  最后修改时间:2005.7.2
*/
#pragma once
#include <windows.h>

//namespace our
//{	
	class Time
	{
	public:	
        Time();
		~Time();
		void start();  //开始计时
		void end();    //停止计时
		double time_milli();   //以毫秒精度输出所用时间
		double time_micro();   //以微秒精度输出所用时间 
	private:
		double _start,_end;    //起止时间(毫秒)
		LARGE_INTEGER BegTicks,EndTicks,TicksCount;  //计时器起止周期,频率
		bool flag;   //标志计时状态
		DWORD dwOldProcessP,dwOldThreadP; //保存原来的进程和线程状态
	};

	inline Time::Time():_start(0),_end(0),flag(false)
	{
		dwOldProcessP = GetPriorityClass(GetCurrentProcess());   //保存当前进程状态
		dwOldThreadP = GetThreadPriority(GetCurrentThread());    //保存当前线程状态
		SetPriorityClass(GetCurrentProcess(), ABOVE_NORMAL_PRIORITY_CLASS);     //设置该进程优先级
		SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_ABOVE_NORMAL);    //设置该线程优先级
		QueryPerformanceFrequency(&TicksCount);  //取得计时器频率
	}

	inline Time::~Time()
	{
		//恢复原进程和线程状态
		SetThreadPriority(GetCurrentThread(), dwOldThreadP);
        SetPriorityClass(GetCurrentProcess(), dwOldProcessP);
	}
    
	inline void Time::start()
	{
		_start=GetTickCount();
		QueryPerformanceCounter(&BegTicks); //取得计时器当前值
		flag=false;
	}

	inline void Time::end()
	{
		_end=GetTickCount();
		QueryPerformanceCounter(&EndTicks); //取得计时器当前值
		flag=true;
	}

	inline double Time::time_milli()
	{
		if(flag==true)
		    return (_end - _start)/1000;
		else
			return -1;  //计时失败
	}

	inline double Time::time_micro()
	{
		if(flag==true)
		    return double (EndTicks.QuadPart-BegTicks.QuadPart)/TicksCount.QuadPart;
		else
			return -1;  //计时失败
	}
//}

⌨️ 快捷键说明

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