📄 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; //标志计时状态
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 + -