规避GetTickCount越界问题

//程序中经常性的需要获取系统运行毫秒值来进行计算或者判断。但是

//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;
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值