Skip to content
Snippets Groups Projects
Select Git revision
  • 7992139e56f0d24012c65c25160ad54d070e313c
  • main default protected
2 results

timer.h

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;
    	}
    };