C++ 九阴真经之输出使用时间

我是研究僧i 提交于 2020-08-11 16:15:47
#pragma once
#include <chrono>
#include <string>
#include <iostream>

namespace cho =  std::chrono;

//使用高精度计时器
//计时器
class CTimeMeter
{
public:
	CTimeMeter() ;
	
	// reset方法
	void Reset();
 
	// 输出经过的时间,定义为模板函数
	template<typename Duration=cho::milliseconds>   // 默认输出毫秒ms
	int64_t Elapsed() const
	{
		return cho::duration_cast<Duration>(cho::high_resolution_clock::now() - m_startTime).count();
	}
 
	// 输出微妙
	int64_t ElapsedMicroseconds();
 
	// 输出纳秒
	int64_t ElapsedNanoseconds();
 
	// 输出秒
	int64_t ElapsedSeconds();
 
	// 输出分minute
	int64_t ElapsedMinutes();
 
	// 输出时hour
	int64_t ElapsedHours();
private:
	cho::time_point<cho::high_resolution_clock> m_startTime;
};


//打印使用时间
template<typename Duration=cho::milliseconds>
class DumpUseTime
{
public:
    DumpUseTime(const std::string & strMsg):m_msg(strMsg),m_beg()
    {
        std::cout << m_msg << " 开始" << std::endl;
    }

    ~DumpUseTime()
    {
        std::cout << m_msg << ",使用时间:" << m_beg.Elapsed<Duration>()  << std::endl;
    }
private:
	CTimeMeter m_beg;
	std::string m_msg;
};
#include "TimeMeter.h"

// 构造函数
CTimeMeter::CTimeMeter() : m_startTime(cho::high_resolution_clock::now()) 
{
}   
	
// reset方法
void CTimeMeter::Reset()
{
    m_startTime = cho::high_resolution_clock::now();
}

// 输出微妙
int64_t CTimeMeter::ElapsedMicroseconds()
{
    return Elapsed<cho::milliseconds>();
}

// 输出纳秒
int64_t CTimeMeter::ElapsedNanoseconds()
{
    return Elapsed<cho::nanoseconds>();
}

// 输出秒
int64_t CTimeMeter::ElapsedSeconds()
{
    return Elapsed<cho::seconds>();
}

// 输出分minute
int64_t CTimeMeter::ElapsedMinutes()
{
    return Elapsed<cho::minutes>();
}

// 输出时hour
int64_t CTimeMeter::ElapsedHours()
{
    return Elapsed<cho::hours>();
}


 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!