1 #ifndef BMTIMER__H__INCLUDED__
2 #define BMTIMER__H__INCLUDED__
46 std::chrono::duration<double, std::milli>
duration;
51 statistics(std::chrono::duration<double, std::milli> d,
unsigned r)
76 start_ = std::chrono::steady_clock::now();
93 void stop(
bool silent=
false)
95 finish_ = std::chrono::steady_clock::now();
100 duration_map_type::iterator it =
dmap_->find(
name_);
101 if (it ==
dmap_->end())
103 (*dmap_)[
name_] = st;
114 std::cout <<
name_ <<
": "
115 << std::chrono::duration <double, std::milli> (diff).count()
129 duration_map_type::const_iterator it = dmap.begin();
130 duration_map_type::const_iterator it_end = dmap.end();
132 for ( ;it != it_end; ++it)
146 auto ms = it->second.duration.count();
149 double sec = ms / 1000;
150 std::cout << it->first <<
"; " << std::setprecision(4) << sec <<
" sec" << std::endl;
153 std::cout << it->first <<
"; " << it->second.duration.count() <<
" ms" << std::endl;
158 unsigned iops = (unsigned)((
double)st.
repeats / (double)it->second.duration.count()) * 1000;
161 std::cout << it->first <<
"; " << iops <<
" ops/sec" << std::endl;
165 double ops = ((double)st.
repeats / (
double)it->second.duration.count()) * 1000;
166 std::cout << it->first <<
"; " << std::setprecision(4) << ops <<
" ops/sec" << std::endl;
176 unsigned iops = (unsigned)((
double)st.
repeats / (double)it->second.duration.count()) * 1000;
179 std::cout << it->first <<
"; " << iops <<
" ops/sec; "
180 << std::setprecision(4) << it->second.duration.count() <<
" ms" << std::endl;
184 double sec = double(it->second.duration.count()) / 1000;
186 double ops = ((double)st.
repeats / (
double)it->second.duration.count()) * 1000;
187 std::cout << it->first <<
"; " << std::setprecision(4) << ops <<
" ops/sec; "
188 << std::setprecision(4) << sec <<
" sec." << std::endl;
205 std::chrono::time_point<std::chrono::steady_clock>
start_;
206 std::chrono::time_point<std::chrono::steady_clock>
finish_;