2020-08-30 15:43:45 +02:00
|
|
|
|
|
|
|
|
// Copyright Catch2 Authors
|
|
|
|
|
// Distributed under the Boost Software License, Version 1.0.
|
2022-10-28 11:22:53 +02:00
|
|
|
// (See accompanying file LICENSE.txt or copy at
|
2020-08-30 15:43:45 +02:00
|
|
|
// https://www.boost.org/LICENSE_1_0.txt)
|
|
|
|
|
|
|
|
|
|
// SPDX-License-Identifier: BSL-1.0
|
2020-03-30 10:34:21 +02:00
|
|
|
#include <catch2/catch_timer.hpp>
|
2013-08-07 18:56:35 +01:00
|
|
|
|
2017-04-25 12:24:34 +01:00
|
|
|
#include <chrono>
|
2013-08-07 18:56:35 +01:00
|
|
|
|
|
|
|
|
namespace Catch {
|
|
|
|
|
|
2021-09-29 11:26:38 +02:00
|
|
|
namespace {
|
|
|
|
|
static auto getCurrentNanosecondsSinceEpoch() -> uint64_t {
|
2024-09-13 11:15:54 +02:00
|
|
|
return std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::steady_clock::now().time_since_epoch()).count();
|
2021-09-29 11:26:38 +02:00
|
|
|
}
|
|
|
|
|
} // end unnamed namespace
|
2013-08-07 18:56:35 +01:00
|
|
|
|
2017-08-04 19:23:30 +01:00
|
|
|
void Timer::start() {
|
|
|
|
|
m_nanoseconds = getCurrentNanosecondsSinceEpoch();
|
|
|
|
|
}
|
2017-12-08 15:57:36 +00:00
|
|
|
auto Timer::getElapsedNanoseconds() const -> uint64_t {
|
|
|
|
|
return getCurrentNanosecondsSinceEpoch() - m_nanoseconds;
|
2017-08-04 19:23:30 +01:00
|
|
|
}
|
2017-12-08 15:57:36 +00:00
|
|
|
auto Timer::getElapsedMicroseconds() const -> uint64_t {
|
|
|
|
|
return getElapsedNanoseconds()/1000;
|
2017-08-04 19:23:30 +01:00
|
|
|
}
|
|
|
|
|
auto Timer::getElapsedMilliseconds() const -> unsigned int {
|
|
|
|
|
return static_cast<unsigned int>(getElapsedMicroseconds()/1000);
|
|
|
|
|
}
|
|
|
|
|
auto Timer::getElapsedSeconds() const -> double {
|
2024-05-23 16:49:57 +02:00
|
|
|
return static_cast<double>(getElapsedMicroseconds())/1000000.0;
|
2017-08-04 19:23:30 +01:00
|
|
|
}
|
|
|
|
|
|
2017-08-04 13:53:47 +01:00
|
|
|
|
2013-08-07 18:56:35 +01:00
|
|
|
} // namespace Catch
|