[cairo-commit] perf/cairo-perf.c perf/cairo-perf.h perf/Makefile.am
perf/rectangles.c
Carl Worth
cworth at kemper.freedesktop.org
Wed Jan 31 12:21:20 PST 2007
perf/Makefile.am | 1
perf/cairo-perf.c | 1
perf/cairo-perf.h | 1
perf/rectangles.c | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 74 insertions(+)
New commits:
diff-tree 382e021ccb657ab1e342e0d0eee402ff5eb89e5d (from 7abfb39709342fc3d95269ad2d76a5e1e8f8d38f)
Author: Dan Amelang <dan at amelang.net>
Date: Wed Jan 31 11:53:06 2007 -0800
Add "rectangles" perf test
This test draws many small, solid pixel-aligned rectangles one at a
time.
diff --git a/perf/Makefile.am b/perf/Makefile.am
index 1ed4c81..a50ce8a 100644
--- a/perf/Makefile.am
+++ b/perf/Makefile.am
@@ -26,6 +26,7 @@ cairo_perf_SOURCES = \
mosaic.h \
paint.c \
pattern_create_radial.c \
+ rectangles.c \
stroke.c \
subimage_copy.c \
tessellate.c \
diff --git a/perf/cairo-perf.c b/perf/cairo-perf.c
index 18cc652..c25b3d4 100644
--- a/perf/cairo-perf.c
+++ b/perf/cairo-perf.c
@@ -329,5 +329,6 @@ cairo_perf_case_t perf_cases[] = {
{ mosaic, 800, 800 },
{ long_lines, 100, 100},
{ unaligned_clip, 100, 100},
+ { rectangles, 512, 512},
{ NULL }
};
diff --git a/perf/cairo-perf.h b/perf/cairo-perf.h
index 1ef9600..1fef997 100644
--- a/perf/cairo-perf.h
+++ b/perf/cairo-perf.h
@@ -105,5 +105,6 @@ CAIRO_PERF_DECL (box_outline);
CAIRO_PERF_DECL (mosaic);
CAIRO_PERF_DECL (long_lines);
CAIRO_PERF_DECL (unaligned_clip);
+CAIRO_PERF_DECL (rectangles);
#endif
diff --git a/perf/rectangles.c b/perf/rectangles.c
new file mode 100644
index 0000000..9fa89f5
--- /dev/null
+++ b/perf/rectangles.c
@@ -0,0 +1,71 @@
+/*
+ * Copyright © 2006 Dan Amelang
+ *
+ * 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 authors not be used in advertising or publicity pertaining to
+ * distribution of the software without specific, written prior
+ * permission. The authors make no representations about the
+ * suitability of this software for any purpose. It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS, IN NO EVENT SHALL THE AUTHORS 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: Dan Amelang <dan at amelang.net>
+ */
+#include "cairo-perf.h"
+
+#define RECTANGLE_COUNT (1000)
+
+static struct
+{
+ double x;
+ double y;
+ double width;
+ double height;
+} rects[RECTANGLE_COUNT];
+
+static cairo_perf_ticks_t
+do_rectangles (cairo_t *cr, int width, int height)
+{
+ int i;
+
+ cairo_perf_timer_start ();
+
+ for (i = 0; i < RECTANGLE_COUNT; i++)
+ {
+ cairo_rectangle (cr, rects[i].x, rects[i].y,
+ rects[i].width, rects[i].height);
+ cairo_fill (cr);
+ }
+
+ cairo_perf_timer_stop ();
+
+ return cairo_perf_timer_elapsed ();
+}
+
+void
+rectangles (cairo_perf_t *perf, cairo_t *cr, int width, int height)
+{
+ int i;
+
+ srand (8478232);
+ for (i = 0; i < RECTANGLE_COUNT; i++)
+ {
+ rects[i].x = rand () % width;
+ rects[i].y = rand () % height;
+ rects[i].width = (rand () % (width / 10)) + 1;
+ rects[i].height = (rand () % (height / 10)) + 1;
+ }
+
+ cairo_perf_run (perf, "rectangles", do_rectangles);
+}
More information about the cairo-commit
mailing list