Sleipnir C++ API
Loading...
Searching...
No Matches
setup_profiler.hpp
1// Copyright (c) Sleipnir contributors
2
3#pragma once
4
5#include <chrono>
6#include <string>
7#include <string_view>
8
9namespace slp {
10
16 public:
18 std::string name;
19
25 explicit SetupProfiler(std::string_view name) : name{name} {}
26
30 void start() {
31#ifndef SLEIPNIR_DISABLE_DIAGNOSTICS
32 m_setup_start_time = std::chrono::steady_clock::now();
33#endif
34 }
35
39 void stop() {
40#ifndef SLEIPNIR_DISABLE_DIAGNOSTICS
41 m_setup_stop_time = std::chrono::steady_clock::now();
42 m_setup_duration = m_setup_stop_time - m_setup_start_time;
43#endif
44 }
45
51 const std::chrono::duration<double>& duration() const {
52 return m_setup_duration;
53 }
54
55 private:
56 std::chrono::steady_clock::time_point m_setup_start_time;
57 std::chrono::steady_clock::time_point m_setup_stop_time;
58 std::chrono::duration<double> m_setup_duration{0.0};
59};
60
61} // namespace slp
Definition setup_profiler.hpp:15
const std::chrono::duration< double > & duration() const
Definition setup_profiler.hpp:51
SetupProfiler(std::string_view name)
Definition setup_profiler.hpp:25
void stop()
Definition setup_profiler.hpp:39
void start()
Definition setup_profiler.hpp:30
std::string name
Name of measurement to show in diagnostics.
Definition setup_profiler.hpp:18