11std::string printTime(T duration)
18 double ns = std::chrono::duration_cast<std::chrono::nanoseconds>(duration).count();
19 bool forceSeconds =
false;
21 if (ns >= 24 * 60 * 60e9) {
22 auto days = std::floor(ns / (24 * 60 * 60e9));
24 ns -= days * 24 * 60 * 60e9;
29 if (ns >= 60 * 60e9) {
30 auto hours = std::floor(ns / (60 * 60e9));
32 ns -= hours * 60 * 60e9;
36 auto minutes = std::floor(ns / 60e9);
37 ss << minutes <<
" min ";
41 if (ns >= 1e9 || forceSeconds) {
42 ss << (1
e-9 * ns) <<
" s";
43 }
else if (ns >= 1e6) {
44 ss << (1
e-6 * ns) <<
" ms";
45 }
else if (ns >= 1e3) {
46 ss << (1
e-3 * ns) <<
" μs";
57 using std::chrono::steady_clock;
58 steady_clock::time_point end = steady_clock::now();
std::chrono::steady_clock::time_point fBegin
const std::string fMessage
TimingScope(std::function< void(std::string const &)> printer, std::string const &message)
std::function< void(std::string const &)> fPrinter