perf: Add stroke and fill tests

This commit is contained in:
Carl Worth 2006-10-04 16:16:03 -07:00
parent d52256df7c
commit fb61fe82d3
5 changed files with 109 additions and 6 deletions

View file

@ -18,7 +18,9 @@ cairo_perf_SOURCES = \
cairo-perf.c \
cairo-perf.h \
cairo-perf-cover.c \
fill.c \
paint.c \
stroke.c \
tessellate.c
if CAIRO_HAS_WIN32_SURFACE

View file

@ -155,13 +155,13 @@ cairo_perf_run (cairo_perf_t *perf,
_compute_stats (times, .85 * perf->iterations, &stats);
if (first_run) {
printf ("[ # ] %8s-%-4s %35s %9s %5s %s\n",
printf ("[ # ] %8s-%-4s %36s %9s %5s %s\n",
"backend", "content", "test-size", "mean ms",
"std dev.", "iterations");
first_run = FALSE;
}
printf ("[%3d] %8s-%-4s %33s-%-3d ",
printf ("[%3d] %8s-%-4s %34s-%-3d ",
perf->test_number, perf->target->name,
_content_to_string (perf->target->content),
name, perf->size);
@ -225,7 +225,9 @@ main (int argc, char *argv[])
}
cairo_perf_case_t perf_cases[] = {
{ paint, 64, 512},
{ paint, 64, 512},
{ fill, 64, 256},
{ stroke, 64, 256},
{ tessellate, 100, 100},
{ NULL }
};

View file

@ -82,10 +82,9 @@ cairo_perf_cover_sources_and_operators (cairo_perf_t *perf,
#define CAIRO_PERF_DECL(func) void (func) (cairo_perf_t *perf, cairo_t *cr, int width, int height);
/* paint.c */
CAIRO_PERF_DECL (fill);
CAIRO_PERF_DECL (paint);
/* tessellate.c */
CAIRO_PERF_DECL (stroke);
CAIRO_PERF_DECL (tessellate);
#endif

49
perf/fill.c Normal file
View file

@ -0,0 +1,49 @@
/*
* Copyright © 2006 Red Hat, Inc.
*
* 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
* Red Hat, Inc. not be used in advertising or publicity pertaining to
* distribution of the software without specific, written prior
* permission. Red Hat, Inc. makes no representations about the
* suitability of this software for any purpose. It is provided "as
* is" without express or implied warranty.
*
* RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
* SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS, IN NO EVENT SHALL RED HAT, INC. 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.
*
* Author: Carl D. Worth <cworth@cworth.org>
*/
#include "cairo-perf.h"
static cairo_perf_ticks_t
do_fill (cairo_t *cr, int width, int height)
{
cairo_arc (cr,
width/2.0, height/2.0,
width/3.0,
0, 2 * M_PI);
cairo_perf_timer_start ();
cairo_fill (cr);
cairo_perf_timer_stop ();
return cairo_perf_timer_elapsed ();
}
void
fill (cairo_perf_t *perf, cairo_t *cr, int width, int height)
{
cairo_perf_cover_sources_and_operators (perf, "fill", do_fill);
}

51
perf/stroke.c Normal file
View file

@ -0,0 +1,51 @@
/*
* Copyright © 2006 Red Hat, Inc.
*
* 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
* Red Hat, Inc. not be used in advertising or publicity pertaining to
* distribution of the software without specific, written prior
* permission. Red Hat, Inc. makes no representations about the
* suitability of this software for any purpose. It is provided "as
* is" without express or implied warranty.
*
* RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
* SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS, IN NO EVENT SHALL RED HAT, INC. 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.
*
* Author: Carl D. Worth <cworth@cworth.org>
*/
#include "cairo-perf.h"
static cairo_perf_ticks_t
do_stroke (cairo_t *cr, int width, int height)
{
cairo_arc (cr,
width/2.0, height/2.0,
width/3.0,
0, 2 * M_PI);
cairo_close_path (cr);
cairo_perf_timer_start ();
cairo_set_line_width (cr, width/5.0);
cairo_stroke (cr);
cairo_perf_timer_stop ();
return cairo_perf_timer_elapsed ();
}
void
stroke (cairo_perf_t *perf, cairo_t *cr, int width, int height)
{
cairo_perf_cover_sources_and_operators (perf, "stroke", do_stroke);
}