?? o_time.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; //標(biāo)志計時狀態(tài)
DWORD dwOldProcessP,dwOldThreadP; //保存原來的進程和線程狀態(tài)
};
inline Time::Time():_start(0),_end(0),flag(false)
{
dwOldProcessP = GetPriorityClass(GetCurrentProcess()); //保存當(dāng)前進程狀態(tài)
dwOldThreadP = GetThreadPriority(GetCurrentThread()); //保存當(dāng)前線程狀態(tài)
SetPriorityClass(GetCurrentProcess(), ABOVE_NORMAL_PRIORITY_CLASS); //設(shè)置該進程優(yōu)先級為最高
SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_ABOVE_NORMAL); //設(shè)置該線程優(yōu)先級為最高
QueryPerformanceFrequency(&TicksCount); //取得計時器頻率
}
inline Time::~Time()
{
//恢復(fù)原進程和線程狀態(tài)
SetThreadPriority(GetCurrentThread(), dwOldThreadP);
SetPriorityClass(GetCurrentProcess(), dwOldProcessP);
}
inline void Time::start()
{
_start=GetTickCount();
QueryPerformanceCounter(&BegTicks); //取得計時器當(dāng)前值
flag=false;
}
inline void Time::end()
{
_end=GetTickCount();
QueryPerformanceCounter(&EndTicks); //取得計時器當(dāng)前值
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; //計時失敗
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -