Skip to content
Snippets Groups Projects
Select Git revision
  • 989674e48de791f85682f1f3de59db953b0f6b13
  • master default protected
  • lifecycle
  • kru0052-master-patch-91081
  • chat
  • 20180621-revision
  • 20180621-before_revision
7 results

mathjax.md

Blame
  • timer.h 1.21 KiB
    #pragma once
    
    #include <chrono>
    
    class timer
    {
    private:
    	std::chrono::steady_clock::duration total_duration;
    	std::chrono::steady_clock::duration lap_duration;
    	std::chrono::steady_clock::time_point start_point;
    	static constexpr double ticks_to_sec = ((double)std::chrono::steady_clock::period::num) / std::chrono::steady_clock::period::den; // duration of one tick
    public:
    	timer(bool start = false)
    	{
    		this->reset();
    
    		if(start)
    			this->start();
    	}
    
    	void start()
    	{
    		this->start_point = std::chrono::steady_clock::now();
    	}
    
    	void stop()
    	{
    		auto stop_point = std::chrono::steady_clock::now();
    		this->lap_duration = stop_point - start_point;
    		this->total_duration += this->lap_duration;
    	}
    
    	void reset()
    	{
    		this->total_duration = std::chrono::steady_clock::duration(0);
    		this->lap_duration = std::chrono::steady_clock::duration(0);
    	}
    
    	std::chrono::steady_clock::duration get_lap_duration() const
    	{
    		return this->lap_duration;
    	}
    
    	std::chrono::steady_clock::duration get_total_duration() const
    	{
    		return this->total_duration;
    	}
    
    	double get_lap_time() const
    	{
    		return (double)this->lap_duration.count() * ticks_to_sec;
    	}
    
    	double get_total_time() const
    	{
    		return this->total_duration.count() * ticks_to_sec;
    	}
    };