boost::int64_t elapsed_microseconds() const { return boost::int64_t((take_time_stamp() - start_time_) * 1e-3); }
boost::int64_t elapsed_nanoseconds() const { return boost::int64_t(take_time_stamp() - start_time_); }
double elapsed() const // return elapsed time in seconds { return double(take_time_stamp() - start_time_) * 1e-9; }
void restart() { start_time_ = take_time_stamp(); }
static double now() { return take_time_stamp() * 1e-9; }
high_resolution_timer() : start_time_(take_time_stamp()) { }
thread_aware_timer() : start_time_(take_time_stamp()) { }