2020-08-30 15:43:45 +02:00
|
|
|
|
|
|
|
|
// Copyright Catch2 Authors
|
|
|
|
|
// Distributed under the Boost Software License, Version 1.0.
|
|
|
|
|
// (See accompanying file LICENSE_1_0.txt or copy at
|
|
|
|
|
// 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
|
|
|
|
2018-04-01 22:50:39 +02:00
|
|
|
static const uint64_t nanosecondsInSecond = 1000000000;
|
|
|
|
|
|
2013-08-07 18:56:35 +01:00
|
|
|
namespace Catch {
|
|
|
|
|
|
2017-08-04 12:22:16 +01:00
|
|
|
auto getCurrentNanosecondsSinceEpoch() -> uint64_t {
|
|
|
|
|
return std::chrono::duration_cast<std::chrono::nanoseconds>( std::chrono::high_resolution_clock::now().time_since_epoch() ).count();
|
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 {
|
|
|
|
|
return getElapsedMicroseconds()/1000000.0;
|
|
|
|
|
}
|
|
|
|
|
|
2017-08-04 13:53:47 +01:00
|
|
|
|
2013-08-07 18:56:35 +01:00
|
|
|
} // namespace Catch
|