123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #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
|