diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2009-07-23 08:45:58 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2009-07-23 15:32:12 +0100 |
commit | 6c28c7a1e268fad0ad34cac0d8a9a3951d8f3c7a (patch) | |
tree | b13e5c2a0ab083bde57f203359a3f932b38ad370 /perf/cairo-perf-print.c | |
parent | 92ba74d760f20cd257b3916a51c8efef1c0e021e (diff) | |
download | cairo-6c28c7a1e268fad0ad34cac0d8a9a3951d8f3c7a.tar.gz |
[perf] Add a simple report printer.
After a run, it can be useful to reprint the results, so add
cairo-perf-print to perform that task.
For the future, I'd like to move the performance suite over to the
git/perf style of single, multi-function binary.
The sequence of operations that I typically do are:
./cairo-perf-trace -r -v -i 6 > `git describe`.`hostname`.perf
./cairo-perf-diff-files REVA REVB
./cairo-perf-print REVA
./cairo-perf-compare-backends REVA
which misses the caching available with cairo-perf-diff. 'make html' is
almost what I want, but still too prescriptive. However, that does need to
be addressed for continuous performance monitoring.
Along the perf lines, those sequence of operations become:
./cairo-perf record -i 6
./cairo-perf report
./cairo-perf report REVA REVB
./cairo-perf report --backends="image,xlib,gl" REVA REVB
./cairo-perf report --html REVA REVB
Also we want to think about installing the cairo-perf binary. So we want
to differentiate when run inside a git checkout.
Diffstat (limited to 'perf/cairo-perf-print.c')
-rw-r--r-- | perf/cairo-perf-print.c | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/perf/cairo-perf-print.c b/perf/cairo-perf-print.c new file mode 100644 index 000000000..05bf5bd01 --- /dev/null +++ b/perf/cairo-perf-print.c @@ -0,0 +1,72 @@ +/* + * Copyright © 2006 Red Hat, Inc. + * Copyright © 2009 Chris Wilson + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without + * fee, provided that the above copyright notice appear in all copies + * and that both that copyright notice and this permission notice + * appear in supporting documentation, and that the name of the + * copyright holders not be used in advertising or publicity + * pertaining to distribution of the software without specific, + * written prior permission. The copyright holders make no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied + * warranty. + * + * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS + * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY + * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN + * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + * SOFTWARE. + * + * Authors: Carl Worth <cworth@cworth.org> + * Chris Wilson <chris@chris-wilson.co.uk> + */ + +#include "cairo-perf.h" + +#include <stdio.h> + +static void +report_print (const cairo_perf_report_t *report) +{ + const test_report_t *tests; + + tests = report->tests; + for (tests = report->tests; tests->name != NULL; tests++) { + if (tests->stats.iterations == 0) + continue; + + if (tests->size) { + printf ("%5s-%-4s %26s-%-3d %6.2f %4.2f%%\n", + tests->backend, tests->content, + tests->name, tests->size, + tests->stats.median_ticks / tests->stats.ticks_per_ms, + tests->stats.std_dev * 100); + } else { + printf ("%5s %26s %6.2f %4.2f%%\n", + tests->backend, tests->name, + tests->stats.median_ticks / tests->stats.ticks_per_ms, + tests->stats.std_dev * 100); + } + } +} + +int +main (int argc, const char *argv[]) +{ + int i; + + for (i = 1; i < argc; i++ ) { + cairo_perf_report_t report; + + cairo_perf_report_load (&report, argv[i], NULL); + report_print (&report); + } + + return 0; +} |