mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-05-08 04:28:02 +02:00
[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.
This commit is contained in:
parent
92ba74d760
commit
6c28c7a1e2
2 changed files with 78 additions and 2 deletions
|
|
@ -13,14 +13,15 @@ AM_LDFLAGS = $(CAIRO_LDFLAGS)
|
|||
EXTRA_PROGRAMS += cairo-perf \
|
||||
cairo-perf-trace \
|
||||
cairo-perf-diff-files \
|
||||
cairo-perf-print \
|
||||
cairo-perf-compare-backends \
|
||||
cairo-perf-graph-files
|
||||
EXTRA_DIST += cairo-perf-diff COPYING
|
||||
EXTRA_LTLIBRARIES += libcairoperf.la
|
||||
|
||||
LDADD = $(top_builddir)/boilerplate/libcairoboilerplate.la \
|
||||
LDADD = libcairoperf.la \
|
||||
$(top_builddir)/boilerplate/libcairoboilerplate.la \
|
||||
$(top_builddir)/src/libcairo.la \
|
||||
libcairoperf.la \
|
||||
$(CAIROPERF_LIBS)
|
||||
|
||||
cairo_perf_SOURCES = \
|
||||
|
|
@ -99,6 +100,9 @@ cairo_perf_trace_DEPENDENCIES = \
|
|||
cairo_perf_diff_files_SOURCES = \
|
||||
cairo-perf-diff-files.c
|
||||
|
||||
cairo_perf_print_SOURCES = \
|
||||
cairo-perf-print.c
|
||||
|
||||
cairo_perf_compare_backends_SOURCES = \
|
||||
cairo-perf-compare-backends.c
|
||||
|
||||
|
|
|
|||
72
perf/cairo-perf-print.c
Normal file
72
perf/cairo-perf-print.c
Normal file
|
|
@ -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;
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue