Avara3D 0.2.0
C++ API reference
Timer.h
1//
2// Timer.h
3// avara3d
4//
5// Created by Morgan Davis on 12/6/25.
6// Copyright © 2026 Morgan K Davis. All rights reserved.
7//
8
9#ifndef AVARA3D_UTIL_TIMER_H
10#define AVARA3D_UTIL_TIMER_H
11
12#include <chrono>
13#include <optional>
14
15namespace a3d::util {
16
18 class Timer {
19
20 public:
21 // [Public Lifecycle Functions]
22
24 explicit Timer(bool start = true);
25
26 // [Public Member Functions]
27
29 void start();
30
36 std::chrono::nanoseconds stop();
37
39 std::chrono::nanoseconds duration() const;
40
42 double durationSeconds() const;
43
45 std::int64_t durationMilliseconds() const;
46
47 private:
48 // [Private Member Variables]
49
50 std::optional<std::chrono::steady_clock::time_point> _start;
51 std::chrono::nanoseconds _duration;
52 };
53
54}
55
56#endif // AVARA3D_UTIL_TIMER_H
Manually controlled steady-clock timer that stores its most recently measured duration.
Definition: Timer.h:18
std::chrono::nanoseconds duration() const
Returns the most recently stored duration in nanoseconds.
std::int64_t durationMilliseconds() const
Returns the most recently stored duration as whole milliseconds.
std::chrono::nanoseconds stop()
Stores and returns the elapsed duration since the most recent start().
void start()
Starts or restarts timing from the current steady-clock time.
Timer(bool start=true)
Creates a Timer, starting it immediately unless start is false.
double durationSeconds() const
Returns the most recently stored duration as fractional seconds.