14#ifndef MLPACK_CORE_UTILITIES_TIMERS_HPP
15#define MLPACK_CORE_UTILITIES_TIMERS_HPP
27 #if !defined(HAVE_UINT64_T)
28 #if SIZEOF_UNSIGNED_LONG == 8
29 typedef unsigned long uint64_t;
31 typedef unsigned long long uint64_t;
59 static void Start(
const std::string& name);
69 static void Stop(
const std::string& name);
76 static std::chrono::microseconds
Get(
const std::string& name);
120 std::chrono::microseconds
GetTimer(
const std::string& timerName);
140 const std::thread::id& threadId = std::thread::id());
149 const std::thread::id& threadId = std::thread::id());
158 const std::thread::id& threadId = std::thread::id());
166 std::atomic<bool>&
Enabled() {
return enabled; }
172 std::map<std::string, std::chrono::microseconds> timers;
174 std::mutex timersMutex;
176 std::map<std::thread::id, std::map<std::string,
177 std::chrono::high_resolution_clock::time_point>> timerStartTime;
180 std::atomic<bool> enabled;
The timer class provides a way for mlpack methods to be timed.
static std::chrono::microseconds Get(const std::string &name)
Get the value of the given timer.
static void DisableTiming()
Disable timing of mlpack programs.
static void EnableTiming()
Enable timing of mlpack programs.
static void ResetAll()
Stop and reset all running timers.
static void Start(const std::string &name)
Start the given timer.
static void Stop(const std::string &name)
Stop the given timer.
void Reset()
Reset the timers.
void StopAllTimers()
Stop all timers.
std::map< std::string, std::chrono::microseconds > GetAllTimers()
Returns a copy of all the timers used via this interface.
void StopTimer(const std::string &timerName, const std::thread::id &threadId=std::thread::id())
* Halts the timer, and replaces its value with the delta time from its start.
bool Enabled() const
Get whether or not timing is enabled.
std::atomic< bool > & Enabled()
Modify whether or not timing is enabled.
bool GetState(const std::string &timerName, const std::thread::id &threadId=std::thread::id())
Returns state of the given timer.
Timers()
Default to disabled.
void PrintTimer(const std::string &timerName)
Prints the specified timer.
std::chrono::microseconds GetTimer(const std::string &timerName)
Returns a copy of the timer specified.
void StartTimer(const std::string &timerName, const std::thread::id &threadId=std::thread::id())
* Initializes a timer, available like a normal value specified on * the command line.
Linear algebra utility functions, generally performed on matrices or vectors.