通过构造函数和析构函数来测试一个函数的执行时长

有时候,在开发的过程中,想要测试一下某个函数的执行时间是多久,这时候,就会用到定时器。

这里就有个小技巧,通过类的构造函数以及析构函数,配合一个计时器,来计算一个函数的执行时间。原理就是先声明一个类,在构造函数中记录当前时间点,然后在析构函数中再记录一下当前时间点,并减去构造函数中记录的起始时间点,这样,只要在需要被测试的函数开头实现一个类对象就可以了。具体的C++代码如下:

//函数执行时长的性能分析
#include "string"
#include <ace/OS.h>
#include <ace/Reactor.h>

Class CpuTimeState
{
public:
	CpuTimeState(char *func_name)
	{
		begin_sec = ACE_OS::gettimeofday().sec();
		begin_usec = ACE_OS::gettimeofday().usec();
		func_name_ = func_name;
	}

	~CpuTimeState()
	{
		int now_sec = ACE_OS::gettimeofday().sec();
		int diff_sec = now_sec - begin_sec;

		long long now_usec = ACE_OS::gettimeofday().usec();
		long long diff_usec = diff_sec * 100000 + (now_usec - begin_usec);
		//下面这行是我们项目中封装的一个打印接口,其实就类似snprintf
		ACE_DEBUG((LM_ERROR, "CpuTimeStat end %s usec=%Q,\n", func_name_.c_str(), diff_usec)); 
	}
private:
	int begin_sec;
	int begin_usec;
	std::string func_name_;
};

上面就是简单的一个类声明,只需要在被测试函数里面第一行实现一个类对象,那么当这个被测试的函数结束之前,就会先调用我们实现的类的析构函数,随后就可以查看打印,观察时间。

//例如
int TestClass::TestFunction()
{
	//假设这个是需要测试的函数,那么在下面加上实现就可以了
	CpuTimeState test_time_log("TestFunction");

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值