PROF_COUNTER: Make Show more generic
Make the Show method accept any stream, default is current behaviour (stderr). Can be used, therefore, also for stdout or even stringsteam. Print a suitable timescale depending on the time recorded, from ns to s.
This commit is contained in:
parent
860198edc5
commit
fac3e2d662
|
@ -89,11 +89,35 @@ public:
|
|||
}
|
||||
|
||||
/**
|
||||
* Print the elapsed time (in ms) to STDERR.
|
||||
* Print the elapsed time (in a suitable unit) to a stream.
|
||||
*
|
||||
* The unit is automatically chosen from ns, us, ms and s, depending on the
|
||||
* size of the current count.
|
||||
*
|
||||
* @param the stream to print to.
|
||||
*/
|
||||
void Show()
|
||||
void Show( std::ostream& aStream = std::cerr )
|
||||
{
|
||||
std::cerr << m_name << " took " << msecs() << "ms." << std::endl;
|
||||
using DURATION = std::chrono::duration<double, std::nano>;
|
||||
|
||||
const auto duration = SinceStart<DURATION>();
|
||||
const double cnt = duration.count();
|
||||
|
||||
if( m_name.size() )
|
||||
{
|
||||
aStream << m_name << " took ";
|
||||
}
|
||||
|
||||
if( cnt < 1e3 )
|
||||
aStream << cnt << "ns";
|
||||
else if( cnt < 1e6 )
|
||||
aStream << cnt / 1e3 << "µs";
|
||||
else if( cnt < 1e9 )
|
||||
aStream << cnt / 1e6 << "ms";
|
||||
else
|
||||
aStream << cnt / 1e9 << "s";
|
||||
|
||||
aStream << std::endl;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue