clock-inl.h 809 B

123456789101112131415161718192021222324252627282930313233
  1. #pragma once
  2. #ifndef CLOCK_INL_H_
  3. #error "Direct inclusion of this file is not allowed, include clock.h"
  4. // For the sake of sane code completion.
  5. #include "clock.h"
  6. #endif
  7. #include <util/system/datetime.h>
  8. namespace NYT {
  9. ////////////////////////////////////////////////////////////////////////////////
  10. Y_FORCE_INLINE TCpuInstant GetCpuInstant()
  11. {
  12. return static_cast<TCpuInstant>(GetCycleCount());
  13. }
  14. Y_FORCE_INLINE TCpuInstant GetApproximateCpuInstant()
  15. {
  16. #if defined(_x86_64_)
  17. ui32 hi, lo;
  18. __asm__ __volatile__("rdtsc"
  19. : "=a"(lo), "=d"(hi));
  20. return static_cast<TCpuInstant>(lo) | (static_cast<TCpuInstant>(hi) << 32);
  21. #else
  22. return GetCpuInstant();
  23. #endif
  24. }
  25. ////////////////////////////////////////////////////////////////////////////////
  26. } // namespace NYT