C++11計算時間差

1380 ワード

#pragma once

#include 
#include 

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 
	auto delta() const { return duration(high_resolution_clock::now() - tpStart).count(); }
	
	template 
	auto delta_restart() {
		auto ts = duration(high_resolution_clock::now() - tpStart).count();
		start();
		return ts;
	}

	template 
	auto stop_delta() { stop(); return duration(tpStop - tpStart).count(); }

	template 
	auto stop_delta_start() {
		stop();
		auto ts = duration(tpStop - tpStart).count();
		start();
		return ts;
	}

private:
	time_point tpStart;
	time_point tpStop;
};