[cairo-commit] perf/cairo-perf.h perf/cairo-perf-trace.c

Chris Wilson ickle at kemper.freedesktop.org
Thu Jun 4 03:17:48 PDT 2009


 perf/cairo-perf-trace.c |   29 ++++++++++++++++++++++++++++-
 perf/cairo-perf.h       |    1 +
 2 files changed, 29 insertions(+), 1 deletion(-)

New commits:
commit 4e11d56f8e5f409ea2476315c9d67116b213b738
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Thu Jun 4 11:16:48 2009 +0100

    [perf] Update trace summary after each iteration
    
    Running the macro-benchmarks takes so long, feedback is important.

diff --git a/perf/cairo-perf-trace.c b/perf/cairo-perf-trace.c
index 7114ae0..6ee63a3 100644
--- a/perf/cairo-perf-trace.c
+++ b/perf/cairo-perf-trace.c
@@ -200,7 +200,7 @@ execute (cairo_perf_t		 *perf,
 	    fprintf (perf->summary,
 		     "[ # ] %8s %28s %8s %5s %5s %s\n",
 		     "backend", "test", "min(s)", "median(s)",
-		     "stddev.", "iterations");
+		     "stddev.", "count");
 	}
 	first_run = FALSE;
     }
@@ -256,11 +256,35 @@ execute (cairo_perf_t		 *perf,
 		}
 	    }
 	}
+
+	if (perf->summary && perf->summary_continuous) {
+	    _cairo_stats_compute (&stats, times, i+1);
+
+	    fprintf (perf->summary,
+		     "\r[%3d] %8s %28s ",
+		     perf->test_number,
+		     perf->target->name,
+		     name);
+	    fprintf (perf->summary,
+		     "%#8.3f %#8.3f %#5.2f%% %3d",
+		     stats.min_ticks / (double) cairo_perf_ticks_per_second (),
+		     stats.median_ticks / (double) cairo_perf_ticks_per_second (),
+		     stats.std_dev * 100.0,
+		     stats.iterations);
+	    fflush (perf->summary);
+	}
     }
     user_interrupt = 0;
 
     if (perf->summary) {
 	_cairo_stats_compute (&stats, times, i);
+	if (perf->summary_continuous) {
+	    fprintf (perf->summary,
+		     "\r[%3d] %8s %28s ",
+		     perf->test_number,
+		     perf->target->name,
+		     name);
+	}
 	fprintf (perf->summary,
 		 "%#8.3f %#8.3f %#5.2f%% %3d\n",
 		 stats.min_ticks / (double) cairo_perf_ticks_per_second (),
@@ -319,6 +343,7 @@ parse_options (cairo_perf_t *perf, int argc, char *argv[])
     perf->names = NULL;
     perf->num_names = 0;
     perf->summary = stdout;
+    perf->summary_continuous = FALSE;
 
     while (1) {
 	c = _cairo_getopt (argc, argv, "i:lrv");
@@ -356,6 +381,8 @@ parse_options (cairo_perf_t *perf, int argc, char *argv[])
 
     if (verbose && perf->summary == NULL)
 	perf->summary = stderr;
+    if (perf->summary == stdout && isatty (fileno(stdout)))
+	perf->summary_continuous = TRUE;
 
     if (optind < argc) {
 	perf->names = &argv[optind];
diff --git a/perf/cairo-perf.h b/perf/cairo-perf.h
index 05447fb..3ff3d7f 100644
--- a/perf/cairo-perf.h
+++ b/perf/cairo-perf.h
@@ -70,6 +70,7 @@ cairo_perf_yield (void);
 /* running a test case */
 typedef struct _cairo_perf {
     FILE *summary;
+    cairo_bool_t summary_continuous;
 
     /* Options from command-line */
     unsigned int iterations;


More information about the cairo-commit mailing list