ppforest2 v0.1.0
Projection Pursuit Decision Trees and Random Forests
Loading...
Searching...
No Matches
Timing.hpp
Go to the documentation of this file.
1
5#pragma once
6
7#include <chrono>
8#include <iomanip>
9#include <sstream>
10#include <string>
11#include <utility>
12
13namespace ppforest2::io {
17 inline std::string now_iso8601() {
18 auto now = std::chrono::system_clock::now();
19 auto time_t = std::chrono::system_clock::to_time_t(now);
20 std::tm tm = {};
21
22#ifdef _WIN32
23 localtime_s(&tm, &time_t);
24#else
25 localtime_r(&time_t, &tm);
26#endif
27
28 std::ostringstream ss;
29 ss << std::put_time(&tm, "%Y-%m-%dT%H:%M:%S");
30 return ss.str();
31 }
32
41 template<typename F> auto measure_time_ms(F&& f) {
42 auto str = std::chrono::high_resolution_clock::now();
43 auto res = f();
44 auto end = std::chrono::high_resolution_clock::now();
45 auto dur = std::chrono::duration_cast<std::chrono::milliseconds>(end - str);
46
47 return std::make_pair(std::move(res), dur.count());
48 }
49}
Definition Color.hpp:31
auto measure_time_ms(F &&f)
Measure the wall-clock execution time of a callable in milliseconds.
Definition Timing.hpp:41
std::string now_iso8601()
Return the current local time as an ISO 8601 string (YYYY-MM-DDTHH:MM:SS).
Definition Timing.hpp:17