summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--progs/perf/common.c18
-rw-r--r--progs/perf/common.h2
2 files changed, 20 insertions, 0 deletions
diff --git a/progs/perf/common.c b/progs/perf/common.c
index 695b8a99d9d..722f4b7b454 100644
--- a/progs/perf/common.c
+++ b/progs/perf/common.c
@@ -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;
+}
diff --git a/progs/perf/common.h b/progs/perf/common.h
index 85db678c64e..fc49bbed32f 100644
--- a/progs/perf/common.h
+++ b/progs/perf/common.h
@@ -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, ...);