//程序中经常性的需要获取系统运行毫秒值来进行计算或者判断。但是
//GetTickCount获取的毫秒值可能在电脑连续运行二三十天以后产生越界现象。
//为了规避这种现象,使用获取程序运行毫秒值来代替系统运行毫秒值
//下面代码是抄袭我师父代码,做个备忘。
//头文件
#ifndef __GET_CPU_TIME_H__
#define __GET_CPU_TIME_H__
#include <Windows.h>
#pragma once
class GetCPUTime
{
public:
GetCPUTime(void);
~GetCPUTime(void);
static void Init();
static long long GetTime();
};
//cpp文件
#include "StdAfx.h"
#include "GetCPUTime.h"
static LARGE_INTEGER m_liPerfStart;
static LARGE_INTEGER m_liPerfFreq;
GetCPUTime::GetCPUTime(void)
{
}
GetCPUTime::~GetCPUTime(void)
{
}
void GetCPUTime::Init()
{
memset(&m_liPerfFreq,0,sizeof(m_liPerfFreq));
memset(&m_liPerfStart,0,sizeof(m_liPerfStart));
//获取每秒多少CPU Performance Tick
QueryPerformanceFrequency(&m_liPerfFreq);
QueryPerformanceCounter(&m_liPerfStart);
}
long long GetCPUTime::GetTime()
{
LARGE_INTEGER liPerfNow={0};
// 计算CPU运行到现在的时间
QueryPerformanceCounter(&liPerfNow);
long long ulInterval = ( ((liPerfNow.QuadPart - m_liPerfStart.QuadPart) * 1000)/m_liPerfFreq.QuadPart);
return ulInterval;
}