VC++追踪代码运行时间

为了方便调试,自己编写了一个探测代码运行时间的类。

该类能够实现us级的精确延时,对于一般的算法应用(ms级别)足够了。

主要用到windows的API,以下是代码:


DetectTime.h

#pragma once

#include <Windows.h>

class DetectTime
{
public:
	DetectTime(void);
	~DetectTime(void);

private:
	//定时参数
	LARGE_INTEGER litmp;
	LONGLONG Count0,Count1;
	double dfMinus, dfFreq;

public:
	double total_dt(void);
	double dt(void);
};

DetectTime.cpp

#include "DetectTime.h"

DetectTime::DetectTime(void)
{
	// 获得计数器的时钟频率
	QueryPerformanceFrequency(&litmp);
	dfFreq = (double)litmp.QuadPart;
	// 获得初始时间点
	QueryPerformanceCounter(&litmp);
	Count0 = litmp.QuadPart;

}

DetectTime::~DetectTime(void)
{
}

// 计算当前时间点与初始时间点的时差
double DetectTime::total_dt()
{
	//获得当前时间点
	QueryPerformanceCounter(&litmp);
	Count1 = litmp.QuadPart;
	dfMinus = (double)(Count1-Count0);
	return (dfMinus / dfFreq *1000);	// 获得对应的时间值,单位为ms
	
}

// 计算当前时间点与上一个时间点的时差
double DetectTime::dt()
{
	LONGLONG prev_Count;

	prev_Count = Count1;

	//获得当前时间点
	QueryPerformanceCounter(&litmp);
	Count1 = litmp.QuadPart;
	dfMinus = (double)(Count1-prev_Count);
	return (dfMinus / dfFreq *1000);	// 获得对应的时间值,单位为ms
	
}

使用方法:

先在代码段首部定义一个DetectTime类,然后在需要检测运行时间的地方插入 DetectTime::dt()  方法,就可以计算该时间点跟上一个dt() 的时间间隔;DetectTime::total_dt()  用于检测从类建立到改时间点的总运行时间。返回的时间值的单位是ms


例子:

void main(void)
{
DetectTime probe;
//时间点0
cout<<"时间点0  "<<probe.dt()<<" ms."<<endl;

func1();

//时间点1
cout<<"时间点1与时间点0的间隔 "<<probe.dt()<<" ms."<<endl; 

func2();

//时间点2
cout<<"时间点2与时间点1的间隔 "<<probe.dt()<<" ms."<<endl; 

func3();
func4();

cout<<"总体运行时间 "<<probe.tatol_dt()<<" ms."<<endl; 
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值