C++11 defines high_resolution_clock
and it has the member types period
and rep
. But I can not figure out how I can get the precision of that clock.
Or, if I may not get to the precision, can I somehow at least get a count in nanoseconds of the minimum representable time duration between ticks? probably using period
?
#include <iostream>
#include <chrono>
void printPrec() {
std::chrono::high_resolution_clock::rep x = 1;
// this is not the correct way to initialize 'period':
//high_resolution_clock::period y = 1;
std::cout << "The smallest period is "
<< /* what to do with 'x' or 'y' here? */
<< " nanos\n";
}
The minimum representable duration is high_resolution_clock::period::num / high_resolution_clock::period::den
seconds. You can print it like this:
std::cout << (double) std::chrono::high_resolution_clock::period::num
/ std::chrono::high_resolution_clock::period::den;
Why is this? A clock's ::period
member is defined as "The tick period of the clock in seconds." It is a specialization of std::ratio
which is a template to represent ratios at compile-time. It provides two integral constants: num
and den
, the numerator and denominator of a fraction, respectively.