std c++ 获取运行时间封装
Posted qianbo_insist
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了std c++ 获取运行时间封装相关的知识,希望对你有一定的参考价值。
c++11 的时间
名空间在std::chrono 里卖弄
using namespace std::chrono
1 使用std::chrono::system_clock
#include <chrono>
#include <string>
#include <iomanip>
#include <ctime>
#include <sstream>
using namespace std::chrono;
#if 1
class c_time {
public:
c_time() {}
~c_time() {}
inline void Start() { this->start = std::chrono::system_clock::now(); }
inline void End() { this->end = std::chrono::system_clock::now(); }
inline int64_t GetRunTime() {
auto us_duration = std::chrono::duration_cast<std::chrono::microseconds>(this->end - this->start);
//auto ms_duration = std::chrono::duration_cast<std::chrono::milliseconds>(this->end - this->start);
uint64_t ms = us_duration.count();
return ms;
}
std::string Now() {
auto now = std::chrono::system_clock::now();
auto m = now.time_since_epoch();
//auto diff = std::chrono::duration_cast<std::chrono::microseconds>(m).count(); //当前时间显示到微秒
//auto const ms = diff % 1000000;
auto diff = std::chrono::duration_cast<std::chrono::milliseconds>(m).count(); //当前时间显示到毫秒
auto const ms = diff % 1000;
std::stringstream ss;
std::time_t t = std::chrono::system_clock::to_time_t(now);
ss << std::put_time(std::localtime(&t), "%Y-%m-%d %H.%M.%S") << "." << ms;
return ss.str();
}
private:
std::chrono::system_clock::time_point start;
std::chrono::system_clock::time_point end;
};
2 使用high_resolution_clock
class c_time2
{
private:
time_point<high_resolution_clock> v_begin;
public:
c_time2()
{
update();
}
~c_time2()
{}
void update()
{
v_begin = high_resolution_clock::now();
}
double get_s()
{
return get_us() * 0.000001;
}
double get_ms()
{
return this->get_us() * 0.001;
}
uint64_t get_us()
{
return duration_cast<microseconds>(high_resolution_clock::now() - v_begin).count();
}
};
//分别是得到秒,毫秒,微妙
#endif
使用
c_time2 t;
... 其他 耗时 模拟
std::cout << ff1.get() << std::endl;
std::cout << ff2.get() << std::endl;
std::cout << ff3.get() << std::endl;
...
//得到微妙
std::cout << t.get_us()<<" us" << std::endl;
以上是关于std c++ 获取运行时间封装的主要内容,如果未能解决你的问题,请参考以下文章
C++ 运行时终止 std::out_of_range [关闭]
如何从 C++ 中的 std::chrono::year_month_day 获取工作日编号