perf bench: Modify builtin-pipe.c for processing common options
authorHitoshi Mitake <mitake@dcl.info.waseda.ac.jp>
Mon, 9 Nov 2009 23:20:02 +0000 (08:20 +0900)
committerIngo Molnar <mingo@elte.hu>
Tue, 10 Nov 2009 03:53:49 +0000 (04:53 +0100)
This patch modifies builtin-pipe.c for processing common
options. The first option added is "--format".
Users of perf bench will be able to specify output style by
--format.

Usage example:

 % ./perf bench sched pipe # with no style specify
 (executing 1000000 pipe operations between two tasks)

         Total time:5.855 sec
                 5.855061 usecs/op
                 170792 ops/sec

 % ./perf bench --format=simple sched pipe # specified simple
 5.988

Signed-off-by: Hitoshi Mitake <mitake@dcl.info.waseda.ac.jp>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>
LKML-Reference: <1257808802-9420-5-git-send-email-mitake@dcl.info.waseda.ac.jp>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>
tools/perf/bench/sched-pipe.c

index 6a29100..a9ac186 100644 (file)
 
 #define LOOPS_DEFAULT 1000000
 static int loops = LOOPS_DEFAULT;
-static int simple = 0;
 
 static const struct option options[] = {
        OPT_INTEGER('l', "loop", &loops,
                    "Specify number of loops"),
-       OPT_BOOLEAN('s', "simple-output", &simple,
-                   "Do simple output (this maybe useful for"
-                   "processing by scripts or graph tools like gnuplot)"),
        OPT_END()
 };
 
@@ -94,10 +90,8 @@ int bench_sched_pipe(int argc, const char **argv,
                return 0;
        }
 
-       if (simple)
-               printf("%lu.%03lu\n",
-                      diff.tv_sec, diff.tv_usec / 1000);
-       else {
+       switch (bench_format) {
+       case BENCH_FORMAT_DEFAULT:
                printf("(executing %d pipe operations between two tasks)\n\n",
                        loops);
 
@@ -111,6 +105,18 @@ int bench_sched_pipe(int argc, const char **argv,
                printf("\t\t%d ops/sec\n",
                       (int)((double)loops /
                             ((double)result_usec / (double)1000000)));
+               break;
+
+       case BENCH_FORMAT_SIMPLE:
+               printf("%lu.%03lu\n",
+                      diff.tv_sec, diff.tv_usec / 1000);
+               break;
+
+       default:
+               /* reaching here is something disaster */
+               fprintf(stderr, "Unknown format:%d\n", bench_format);
+               exit(1);
+               break;
        }
 
        return 0;