From df3cd193e5e71b7c93e0624fafbdbfc7e40578bf Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Mon, 18 Sep 2017 22:56:17 +0200 Subject: [PATCH] Improve time to string conversion. - Make sure comparison doesn't overflow. - Time is not base-2 (doh!). - Use doubles instead of floats for better precision. - Support displaying minutes. --- server/TracyView.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/server/TracyView.cpp b/server/TracyView.cpp index c1c25995..39e2be73 100755 --- a/server/TracyView.cpp +++ b/server/TracyView.cpp @@ -332,17 +332,23 @@ const char* View::TimeToString( uint64_t ns ) const { sprintf( buf, "%i ns", ns ); } - else if( ns < 1000 * 1000 ) + else if( ns < 1000ull * 1000 ) { - sprintf( buf, "%.2f us", ns / 1024.f ); + sprintf( buf, "%.2f us", ns / 1000. ); } - else if( ns < 1000 * 1000 * 1000 ) + else if( ns < 1000ull * 1000 * 1000 ) { - sprintf( buf, "%.2f ms", ns / ( 1024.f * 1024 ) ); + sprintf( buf, "%.2f ms", ns / ( 1000. * 1000. ) ); + } + else if( ns < 1000ull * 1000 * 1000 * 60 ) + { + sprintf( buf, "%.2f s", ns / ( 1000. * 1000. * 1000. ) ); } else { - sprintf( buf, "%.2f s", ns / ( 1024.f * 1024 * 1024 ) ); + const auto m = ns / ( 1000ull * 1000 * 1000 * 60 ); + const auto s = ns - m * ( 1000ull * 1000 * 1000 * 60 ); + sprintf( buf, "%i:%04.1f", m, s / ( 1000. * 1000. * 1000. ) ); } return buf; }