C++计算函数执行时间

为优化程序,想知道程序中哪个函数消耗时间最长,自己写了个计算程序执行时间的代码,简单好用

#include<ctime>
#include<string>
#include <iostream>
class Timer
{
    clock_t startT;
    std::string label;//计时内容:有多个计时的时候用于区分
    bool isEnd;//是否已经手动结束计时
public:
    Timer(std::string name = "Time")//创建时开始计时
    {
        startT = clock(); 
        label = name;
        isEnd = false;
    }
    ~Timer()//自动结束计时//对象被销毁时自动结束计时
    {
        if (!isEnd)
        {
            clock_t endT = clock();
            double endtime = (double)(endT - startT) / CLOCKS_PER_SEC;
            std::cout<<label<<": "<< endtime << std::endl;		//s为单位
        }
    }
    void End()//手动结束//手动控制在任意位置处结束计时
    {
        clock_t endT = clock();
        double endtime = (double)(endT - startT) / CLOCKS_PER_SEC;
        std::cout << label << ": " << endtime << std::endl;		//s为单位
        isEnd = true;
    }
};

利用析构函数自动结束计时并打印出时间,也可手动停止计时并打印时间。

下面为使用范例:

例1:计算执行 if( ){ } 代码块中所耗时间

void vIFD::DecodeStrips()
{
		//......省略部分代码
		if (/*...*/)
		{
			Timer time("if Time");//开始计时
			
			//......省略部分代码
			
			//离开作用域后Timer对象被销毁,调用析构函数,自动结束计时
		}
		//......省略部分代码
}

输出结果为:
if Time: 8.877

例2:计算某几行代码消耗时间

int main()
{
	//......省略部分代码
	
	Timer time("Total time");
	//......需要计算时间的代码
	time.End();//手动结束计时
	
	//......省略部分代码
	return 0;
}

输出结果为:
Total Time: 8.907

例3:计算某函数消耗时间

void vIFD::DecodeStrips()
{
	Timer time("DecodeStrips Time");//开始计时
			
	//......省略部分代码
			
	//离开函数后Timer对象被销毁,调用析构函数,自动结束计时
}

输出结果为:
DecodeStrips Time: 8.107

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值