C++11计算时间差

#pragma once

#include <chrono>
#include <ratio>

using namespace std::chrono;

class Timer {
public:
	using s = std::ratio<1, 1>;
	using ms = std::ratio<1, 1000>;
	using us = std::ratio<1, 1000000>;
	using ns = std::ratio<1, 1000000000>;

public:
	Timer() : tpStart(high_resolution_clock::now()), tpStop(tpStart) {}

public:
	void start() { tpStart = high_resolution_clock::now(); }
	void restart() { tpStart = high_resolution_clock::now(); }
	void stop() { tpStop = high_resolution_clock::now(); }

	template <typename span>
	auto delta() const { return duration<double, span>(high_resolution_clock::now() - tpStart).count(); }
	
	template <typename span>
	auto delta_restart() {
		auto ts = duration<double, span>(high_resolution_clock::now() - tpStart).count();
		start();
		return ts;
	}

	template <typename span>
	auto stop_delta() { stop(); return duration<double, span>(tpStop - tpStart).count(); }

	template <typename span>
	auto stop_delta_start() {
		stop();
		auto ts = duration<double, span>(tpStop - tpStart).count();
		start();
		return ts;
	}

private:
	time_point<high_resolution_clock> tpStart;
	time_point<high_resolution_clock> tpStop;
};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值