1 // File: timer.h 2 #pragma once 3 4 typedef unsigned long long timer_ticks; 5 6 class timer 7 { 8 public: 9 timer(); 10 timer(timer_ticks start_ticks); 11 12 void start(); 13 void start(timer_ticks start_ticks); 14 15 void stop(); 16 17 double get_elapsed_secs() const; get_elapsed_ms()18 inline double get_elapsed_ms() const { return get_elapsed_secs() * 1000.0f; } 19 timer_ticks get_elapsed_us() const; 20 21 static void init(); get_ticks_per_sec()22 static inline timer_ticks get_ticks_per_sec() { return g_freq; } 23 static timer_ticks get_init_ticks(); 24 static timer_ticks get_ticks(); 25 static double ticks_to_secs(timer_ticks ticks); ticks_to_ms(timer_ticks ticks)26 static inline double ticks_to_ms(timer_ticks ticks) { return ticks_to_secs(ticks) * 1000.0f; } get_secs()27 static inline double get_secs() { return ticks_to_secs(get_ticks()); } get_ms()28 static inline double get_ms() { return ticks_to_ms(get_ticks()); } 29 30 private: 31 static timer_ticks g_init_ticks; 32 static timer_ticks g_freq; 33 static double g_inv_freq; 34 35 timer_ticks m_start_time; 36 timer_ticks m_stop_time; 37 38 bool m_started : 1; 39 bool m_stopped : 1; 40 }; 41