progs/perf: add human-readable float formatter
authorKeith Whitwell <keithw@vmware.com>
Mon, 21 Sep 2009 14:51:26 +0000 (15:51 +0100)
committerKeith Whitwell <keithw@vmware.com>
Mon, 21 Sep 2009 14:57:13 +0000 (15:57 +0100)
progs/perf/common.c
progs/perf/common.h

index 695b8a99d9d077ff7f9ad4bb556a516339d36aa8..722f4b7b4543a5084a9c326ab818c6a94899bbab 100644 (file)
@@ -113,3 +113,21 @@ PerfMeasureRate(PerfRateFunc f)
 }
 
 
+/* Note static buffer, can only use once per printf.
+ */
+const char *
+PerfHumanFloat( double d )
+{
+   static char buf[80];
+
+   if (d > 1000000000.0)
+      snprintf(buf, sizeof(buf), "%.1f billion", d / 1000000000.0);
+   else if (d > 1000000.0)
+      snprintf(buf, sizeof(buf), "%.1f million", d / 1000000.0);
+   else if (d > 1000.0)
+      snprintf(buf, sizeof(buf), "%.1f thousand", d / 1000.0);
+   else
+      snprintf(buf, sizeof(buf), "%.1f", d);
+
+   return buf;
+}
index 85db678c64ecd7a435a90a82d4944c82eea62dec..fc49bbed32f867c39070a1bedc60345be8bdad0f 100644 (file)
@@ -30,6 +30,8 @@ typedef void (*PerfRateFunc)(unsigned count);
 extern double
 PerfMeasureRate(PerfRateFunc f);
 
+const char *
+PerfHumanFloat( double d );
 
 extern void
 perf_printf(const char *format, ...);