catch2/include/internal/catch_timer.h

40 lines
1.2 KiB
C
Raw Normal View History

/*
* Created by Phil on 05/08/2013.
* Copyright 2013 Two Blue Cubes Ltd. All rights reserved.
*
* Distributed under the Boost Software License, Version 1.0. (See accompanying
* file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
*/
#ifndef TWOBLUECUBES_CATCH_TIMER_H_INCLUDED
#define TWOBLUECUBES_CATCH_TIMER_H_INCLUDED
#include <stdint.h>
namespace Catch {
2017-08-04 13:22:16 +02:00
auto getCurrentNanosecondsSinceEpoch() -> uint64_t;
class Timer {
2017-08-04 13:22:16 +02:00
uint64_t m_nanoseconds = 0;
public:
void start() {
2017-08-04 13:22:16 +02:00
m_nanoseconds = getCurrentNanosecondsSinceEpoch();
}
auto getElapsedNanoseconds() const -> unsigned int {
return static_cast<unsigned int>(getCurrentNanosecondsSinceEpoch() - m_nanoseconds);
}
auto getElapsedMicroseconds() const -> unsigned int {
2017-08-04 13:22:16 +02:00
return static_cast<unsigned int>(getElapsedNanoseconds()/1000);
}
auto getElapsedMilliseconds() const -> unsigned int {
return static_cast<unsigned int>(getElapsedMicroseconds()/1000);
}
auto getElapsedSeconds() const -> double {
return getElapsedMicroseconds()/1000000.0;
}
};
} // namespace Catch
#endif // TWOBLUECUBES_CATCH_TIMER_H_INCLUDED