76inline double cpu_time(
const bool thread =
false)
80 struct rusage usage{};
85 ret = getrusage_thread(usage);
87 ret = getrusage(RUSAGE_SELF, &usage);
89 ret = getrusage((thread ? RUSAGE_THREAD : RUSAGE_SELF), &usage);
93 throw Exception(
"getrusage() call failed: " + std::string(strerror(errno)));
95 double utime =
static_cast<double>(usage.ru_utime.tv_sec) + (
static_cast<double>(usage.ru_utime.tv_usec / 1000000));
96 double stime =
static_cast<double>(usage.ru_stime.tv_sec) + (
static_cast<double>(usage.ru_stime.tv_usec / 1000000));
100 catch (
const std::exception &e)