19 #ifndef _libint2_src_lib_libint_timer_h_ 20 #define _libint2_src_lib_libint_timer_h_ 22 #include <libint2/cxxstd.h> 24 #if LIBINT2_CPLUSPLUS_STD >= 2011 36 typedef std::chrono::duration<double> dur_t;
37 typedef std::chrono::high_resolution_clock clock_t;
38 typedef std::chrono::time_point<clock_t> time_point_t;
46 static time_point_t
now() {
47 return clock_t::now();
54 overhead_ = std::chrono::nanoseconds(ns);
64 const auto tstop =
now();
65 const dur_t result = (tstop - tstart_[t]) - overhead_;
70 double read(
size_t t)
const {
71 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 size_t ntimers = N;
83 dur_t timers_[ntimers];
84 time_point_t tstart_[ntimers];
90 #endif // C++11 or later 92 #endif // header guard void clear()
resets timers to zero
Definition: timer.h:74
Defaults definitions for various parameters assumed by Libint.
Definition: algebra.cc:23
dur_t stop(size_t t)
stops timer t
Definition: timer.h:63
double read(size_t t) const
reads value (in seconds) of timer t , converted to double
Definition: timer.h:70
static time_point_t now()
returns the current time point
Definition: timer.h:46
void start(size_t t)
starts timer t
Definition: timer.h:58
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:53
Timers aggregates N C++11 "timers"; used to high-resolution profile stages of integral computation...
Definition: timer.h:34