ElapsedTimer.cpp 806 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. /*
  2. * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <AK/Assertions.h>
  7. #include <AK/Time.h>
  8. #include <LibCore/ElapsedTimer.h>
  9. namespace Core {
  10. ElapsedTimer ElapsedTimer::start_new()
  11. {
  12. ElapsedTimer timer;
  13. timer.start();
  14. return timer;
  15. }
  16. void ElapsedTimer::start()
  17. {
  18. m_valid = true;
  19. m_origin_time = m_precise ? Time::now_monotonic() : Time::now_monotonic_coarse();
  20. }
  21. void ElapsedTimer::reset()
  22. {
  23. m_valid = false;
  24. m_origin_time = {};
  25. }
  26. i64 ElapsedTimer::elapsed() const
  27. {
  28. return elapsed_time().to_milliseconds();
  29. }
  30. Time ElapsedTimer::elapsed_time() const
  31. {
  32. VERIFY(is_valid());
  33. auto now = m_precise ? Time::now_monotonic() : Time::now_monotonic_coarse();
  34. return now - m_origin_time;
  35. }
  36. }