timer.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /*
  2. * Copyright 2010-2026 Branimir Karadzic. All rights reserved.
  3. * License: https://github.com/bkaradzic/bx/blob/master/LICENSE
  4. */
  5. #ifndef BX_TIMER_H_HEADER_GUARD
  6. #define BX_TIMER_H_HEADER_GUARD
  7. #include "bx.h"
  8. namespace bx
  9. {
  10. ///
  11. int64_t getHPCounter();
  12. ///
  13. int64_t getHPFrequency();
  14. /// Ticks.
  15. struct Ticks
  16. {
  17. /// No default constructor.
  18. Ticks() = delete;
  19. /// No initialization.
  20. Ticks(InitNoneTag);
  21. /// Initialize to zero.
  22. constexpr Ticks(InitZeroTag);
  23. /// Initialize to current time.
  24. Ticks(InitIdentityTag);
  25. /// Initialize to specific time in ticks.
  26. explicit constexpr Ticks(int64_t _ticks);
  27. /// Binary arithmetic operators.
  28. constexpr Ticks operator+ (Ticks _rhs) const;
  29. constexpr Ticks operator- (Ticks _rhs) const;
  30. constexpr Ticks operator* (float _rhs) const;
  31. constexpr Ticks& operator+=(Ticks _rhs);
  32. constexpr Ticks& operator-=(Ticks _rhs);
  33. constexpr Ticks& operator*=(float _rhs);
  34. /// Comparison operators.
  35. constexpr bool operator==(Ticks _rhs) const;
  36. constexpr bool operator!=(Ticks _rhs) const;
  37. constexpr bool operator< (Ticks _rhs) const;
  38. constexpr bool operator<=(Ticks _rhs) const;
  39. constexpr bool operator> (Ticks _rhs) const;
  40. constexpr bool operator>=(Ticks _rhs) const;
  41. static const Ticks s_kStartup; //!< App start time.
  42. static const Ticks s_kFreq; //!< Frequency, ticks per second.
  43. static const double s_kInvFreq; //!< 1.0/s_kFreq
  44. int64_t ticks; //!< Timer ticks.
  45. };
  46. /// Returns current time.
  47. Ticks getNow();
  48. /// Returns time since app startup.
  49. Ticks getTicksSinceStartup();
  50. /// Returns time in seconds.
  51. template<typename Ty>
  52. constexpr Ty toSeconds(const Ticks& _time);
  53. /// Returns time in milliseconds.
  54. template<typename Ty>
  55. constexpr Ty toMilliseconds(const Ticks& _time);
  56. } // namespace bx
  57. #include "inline/timer.inl"
  58. #endif // BX_TIMER_H_HEADER_GUARD