| #ifndef BENCHMARK_TIMERS_H |
| #define BENCHMARK_TIMERS_H |
| |
| #include <chrono> |
| #include <string> |
| |
| namespace benchmark { |
| |
| // Return the CPU usage of the current process |
| double ProcessCPUUsage(); |
| |
| // Return the CPU usage of the children of the current process |
| double ChildrenCPUUsage(); |
| |
| // Return the CPU usage of the current thread |
| double ThreadCPUUsage(); |
| |
| #if defined(HAVE_STEADY_CLOCK) |
| template <bool HighResIsSteady = std::chrono::high_resolution_clock::is_steady> |
| struct ChooseSteadyClock { |
| typedef std::chrono::high_resolution_clock type; |
| }; |
| |
| template <> |
| struct ChooseSteadyClock<false> { |
| typedef std::chrono::steady_clock type; |
| }; |
| #endif |
| |
| struct ChooseClockType { |
| #if defined(HAVE_STEADY_CLOCK) |
| typedef ChooseSteadyClock<>::type type; |
| #else |
| typedef std::chrono::high_resolution_clock type; |
| #endif |
| }; |
| |
| inline double ChronoClockNow() { |
| typedef ChooseClockType::type ClockType; |
| using FpSeconds = std::chrono::duration<double, std::chrono::seconds::period>; |
| return FpSeconds(ClockType::now().time_since_epoch()).count(); |
| } |
| |
| std::string LocalDateTimeString(); |
| |
| } // end namespace benchmark |
| |
| #endif // BENCHMARK_TIMERS_H |