fork(1) download
  1. #include <chrono>
  2. #include <ctime>
  3. #include <cstdint>
  4. struct HighResClock
  5. {
  6. typedef long long rep;
  7. typedef std::nano period;
  8. typedef std::chrono::duration<rep, period> duration;
  9. typedef std::chrono::time_point<HighResClock> time_point;
  10. static const bool is_steady = true;
  11. static time_point now();
  12. };
  13.  
  14. template<class Clock>
  15. class Timer
  16. {
  17. typedef Clock SysClock;
  18. typedef typename Clock::time_point Time;
  19. typedef typename Clock::duration Duration;
  20. Time start_;
  21. public:
  22. Timer();
  23. void Restart();
  24.  
  25. Duration TimeElapsed() const;
  26. int64_t TimeElapsed_s() const;
  27. int64_t TimeElapsed_ms() const;
  28. int64_t TimeElapsed_us() const;
  29. int64_t TimeElapsed_ns() const;
  30.  
  31. template<class unit>
  32. int64_t TimeElapsed_T() const
  33. {
  34. return std::chrono::duration_cast<unit>(TimeElapsed()).count();
  35. }
  36. };
  37.  
  38. using NTimer = Timer<std::chrono::system_clock>;
  39. using HRTimer = Timer<HighResClock>;
  40.  
  41. int main()
  42. {
  43.  
  44. }
  45.  
  46.  
Success #stdin #stdout 0s 3336KB
stdin
Standard input is empty
stdout
Standard output is empty