Messages in this thread | | | Date | Wed, 16 Dec 2015 06:22:46 -0800 | Subject | Re: [PATCH 03/10] perf, tools, stat: Avoid fractional digits for integer scales | From | Stephane Eranian <> |
| |
On Tue, Dec 15, 2015 at 4:54 PM, Andi Kleen <andi@firstfloor.org> wrote: > From: Andi Kleen <ak@linux.intel.com> > > When the scaling factor is a full integer don't display fractional > digits. This avoids unnecessary .00 output for topdown metrics > with scale factors. > > Signed-off-by: Andi Kleen <ak@linux.intel.com> > --- > tools/perf/builtin-stat.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c > index 0c7cdda..1faa6fc 100644 > --- a/tools/perf/builtin-stat.c > +++ b/tools/perf/builtin-stat.c > @@ -63,6 +63,7 @@ > #include <stdlib.h> > #include <sys/prctl.h> > #include <locale.h> > +#include <math.h> > > #define DEFAULT_SEPARATOR " " > #define CNTR_NOT_SUPPORTED "<not supported>" > @@ -739,12 +740,12 @@ static void abs_printout(int id, int nr, struct perf_evsel *evsel, double avg) > const char *fmt; > > if (csv_output) { > - fmt = sc != 1.0 ? "%.2f%s" : "%.0f%s"; > + fmt = sc != 1.0 && floor(sc) != sc ? "%.2f%s" : "%.0f%s"; > } else { > if (big_num) > - fmt = sc != 1.0 ? "%'18.2f%s" : "%'18.0f%s"; > + fmt = sc != 1.0 && floor(sc) != sc ? "%'18.2f%s" : "%'18.0f%s";
if sc is 1.0 then floor(sc) == sc and you'd get the else branch as well, so you probably do not need the sc != 1.0 test anymore.
> else > - fmt = sc != 1.0 ? "%18.2f%s" : "%18.0f%s"; > + fmt = sc != 1.0 && floor(sc) != sc ? "%18.2f%s" : "%18.0f%s"; > } > > aggr_printout(evsel, id, nr); > -- > 2.4.3 >
| |