21#ifndef _libint2_src_lib_libint_timer_h_
22#define _libint2_src_lib_libint_timer_h_
26#include <libint2/util/cxxstd.h>
28#if LIBINT2_CPLUSPLUS_STD >= 2011
41 typedef std::chrono::duration<double> dur_t;
42 typedef std::chrono::high_resolution_clock clock_t;
43 typedef std::chrono::time_point<clock_t> time_point_t;
51 static time_point_t
now() {
return clock_t::now(); }
66 const auto tstop =
now();
67 const dur_t result = (tstop - tstart_[t]) - overhead_;
72 double read(
size_t t)
const {
return timers_[t].count(); }
75 for (
auto t = 0; t != ntimers; ++t) {
76 timers_[t] = dur_t::zero();
77 tstart_[t] = time_point_t();
82 constexpr static auto ntimers = N;
83 dur_t timers_[ntimers];
84 time_point_t tstart_[ntimers];
Timers aggregates N C++11 "timers"; used to high-resolution profile stages of integral computation.
Definition timer.h:39
double read(size_t t) const
reads value (in seconds) of timer t , converted to double
Definition timer.h:72
dur_t stop(size_t t)
stops timer t
Definition timer.h:65
void clear()
resets timers to zero
Definition timer.h:74
static time_point_t now()
returns the current time point
Definition timer.h:51
void set_now_overhead(size_t ns)
use this to report the overhead of now() call; if set, the reported timings will be adjusted for this...
Definition timer.h:58
void start(size_t t)
starts timer t
Definition timer.h:61
Defaults definitions for various parameters assumed by Libint.
Definition algebra.cc:24