Fwd: Patches for speeding up _cairo_fixed_from_double
- From: "Daniel Amelang" <daniel amelang gmail com>
- To: performance-list gnome org
- Subject: Fwd: Patches for speeding up _cairo_fixed_from_double
- Date: Thu, 2 Nov 2006 11:14:32 -0800
Behdad suggested that I forward this here.
Dan Amelang
---------- Forwarded message ----------
From: Daniel Amelang <daniel amelang gmail com>
Date: Nov 1, 2006 10:53 PM
Subject: Patches for speeding up _cairo_fixed_from_double
To: Cairo List <cairo cairographics org>
Attached are patches resulting from the discussion here:
http://lists.freedesktop.org/archives/cairo/2006-October/008285.html
First one defines an autoconf macro AX_C_FLOAT_WORDS_BIGENDIAN that
uses a similar technique as AC_C_BIGENDIAN to avoid having to actually
run code to determine the endianness (thanks again to Owen for the
tip).
Then there's the new _cairo_fixed_from_double that uses
FLOAT_WORDS_BIGENDIAN to pull off the magic number trick in a portable
manner.
Finally, I put together a new performance test to show off the new
speedup. This was necessary as no current tests really exercise the
API calls where conversion takes place. I don't really recommend that
this make it into the main performance suite, as it's pretty specific
to this particular case, but I'm including it here for posterity.
Both the autoconf macro and _cairo_fixed_from_double code are perhaps
overly documented, but they both use pretty unusual techniques, so I
figured they could use the extra attention.
Speedup (detailed diffs attached):
On my Pentium M (1.8GHz) I saw 2.5-3x speeup on my new
pattern_create_radial test. Several of the text_* tests saw a 1.2-1.4x
speedup.
On the same box, I changed over to use software floating point (long
story, hollar if you want details) and also saw a ~3x speedup on the
pattern_create_radial test (the actual magnitudes were quite
different, of course). Again, moderate speedups with the text tests,
but here we see a 1.5x speedup on the tessellate tests (still using
the old tessellator, though). Although the exact amount of speedup
seen on the Nokia 770 will likely be different, I think it will be in
the same ballpark. Anyone with one willing to test?
On a side note, I tried inlining the function to see what would
happen, and I got a 471x slowdown. Pretty bizarre; I'll have to look
into that later.
Dan Amelang
From nobody Mon Sep 17 00:00:00 2001
From: Dan Amelang <dan amelang net>
Date: Sun Oct 29 21:30:08 2006 -0800
Subject: [PATCH] Add autoconf macro AX_C_FLOAT_WORDS_BIGENDIAN
The symbol that this macro defines (FLOAT_WORDS_BIGENDIAN) can be used
to make double arithmetic tricks portable.
---
acinclude.m4 | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
configure.in | 1 +
2 files changed, 66 insertions(+), 0 deletions(-)
3231d91b59a6c2e1c40bbaa8b143694b6c693662
diff --git a/acinclude.m4 b/acinclude.m4
index af73800..a0eb13a 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -51,3 +51,68 @@ ifelse([$1],[],,
AM_CONDITIONAL(ENABLE_GTK_DOC, test x$enable_gtk_doc = xyes)
AM_CONDITIONAL(GTK_DOC_USE_LIBTOOL, test -n "$LIBTOOL")
])
+
+# AX_C_FLOAT_WORDS_BIGENDIAN ([ACTION-IF-TRUE], [ACTION-IF-FALSE],
+# [ACTION-IF-UNKNOWN])
+#
+# Checks the ordering of words within a multi-word float. This check
+# is necessary because on some systems (e.g. certain ARM systems), the
+# float word ordering can be different from the byte ordering. In a
+# multi-word float context, "big-endian" implies that the word containing
+# the sign bit is found in the memory location with the lowest address.
+# This implemenation was inspired by the AC_C_BIGENDIAN macro in autoconf.
+# -------------------------------------------------------------------------
+AC_DEFUN([AX_C_FLOAT_WORDS_BIGENDIAN],
+ [AC_CACHE_CHECK(whether float word ordering is bigendian,
+ ax_cv_c_float_words_bigendian, [
+
+# The endianess is detected by first compiling C code that contains a special
+# double float value, then grepping the resulting object file for certain
+# strings of ascii values. The double is specially crafted to have a
+# binary representation that corresponds with a simple string. In this
+# implementation, the string "noonsees" was selected because the individual
+# word values ("noon" and "sees") are palindromes, thus making this test
+# byte-order agnostic. If grep finds the string "noonsees" in the object
+# file, the target platform stores float words in big-endian order. If grep
+# finds "seesnoon", float words are in little-endian order. If neither value
+# is found, the user is instructed to specify the ordering.
+
+ax_cv_c_float_words_bigendian=unknown
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
+
+double d = 90904234967036810337470478905505011476211692735615632014797120844053488865816695273723469097858056257517020191247487429516932130503560650002327564517570778480236724525140520121371739201496540132640109977779420565776568942592.0;
+
+]])], [
+
+if grep noonsees conftest.$ac_objext >/dev/null ; then
+ ax_cv_c_float_words_bigendian=yes
+fi
+if grep seesnoon conftest.$ac_objext >/dev/null ; then
+ if test "$ax_cv_c_float_words_bigendian" = unknown; then
+ ax_cv_c_float_words_bigendian=no
+ else
+ ax_cv_c_float_words_bigendian=unknown
+ fi
+fi
+
+])])
+
+case $ax_cv_c_float_words_bigendian in
+ yes)
+ m4_default([$1],
+ [AC_DEFINE([FLOAT_WORDS_BIGENDIAN], 1,
+ [Define to 1 if your system stores words within floats
+ with the most significant word first])]) ;;
+ no)
+ $2 ;;
+ *)
+ m4_default([$3],
+ [AC_MSG_ERROR([
+
+Unknown float word ordering. You need to manually preset
+ax_cv_c_float_words_bigendian=no (or yes) according to your system.
+
+ ])]) ;;
+esac
+
+])# AX_C_FLOAT_WORDS_BIGENDIAN
diff --git a/configure.in b/configure.in
index 2d2bf9f..797c7ce 100644
--- a/configure.in
+++ b/configure.in
@@ -55,6 +55,7 @@ AC_PROG_CPP
AC_PROG_LIBTOOL dnl required version (1.4) DON'T REMOVE!
AC_STDC_HEADERS
AC_C_BIGENDIAN
+AX_C_FLOAT_WORDS_BIGENDIAN
dnl ===========================================================================
dnl === Local macros
--
1.2.6
From nobody Mon Sep 17 00:00:00 2001
From: Dan Amelang <dan amelang net>
Date: Sun Oct 29 21:31:23 2006 -0800
Subject: [PATCH] Change _cairo_fixed_from_double to use the "magic number" technique
See long thread here:
http://lists.freedesktop.org/archives/cairo/2006-October/008285.html
---
src/cairo-fixed.c | 48 +++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 47 insertions(+), 1 deletions(-)
d88acddcabe770e17664b34a2d5f74d3926e1642
diff --git a/src/cairo-fixed.c b/src/cairo-fixed.c
index 604c9e7..fe6c2dc 100644
--- a/src/cairo-fixed.c
+++ b/src/cairo-fixed.c
@@ -42,10 +42,56 @@ _cairo_fixed_from_int (int i)
return i << 16;
}
+/* This is the "magic number" approach to converting a double into fixed
+ * point as described here:
+ *
+ * http://www.stereopsis.com/sree/fpu2006.html (an overview)
+ * http://www.d6.com/users/checker/pdfs/gdmfp.pdf (in detail)
+ *
+ * The basic idea is to add a large enough number to the double that the
+ * literal floating point is moved up to the extent that it forces the
+ * double's value to be shifted down to the bottom of the mantissa (to make
+ * room for the large number being added in). Since the mantissa is, at a
+ * given moment in time, a fixed point integer itself, one can convert a
+ * float to various fixed point representations by moving around the point
+ * of a floating point number through arithmetic operations. This behavior
+ * is reliable on most modern platforms as it is mandated by the IEEE-754
+ * standard for floating point arithmetic.
+ *
+ * For our purposes, a "magic number" must be carefully selected that is
+ * both large enough to produce the desired point-shifting effect, and also
+ * has no lower bits in its representation that would interfere with our
+ * value at the bottom of the mantissa. The magic number is calculated as
+ * follows:
+ *
+ * (2 ^ (MANTISSA_SIZE - FRACTIONAL_SIZE)) * 1.5
+ *
+ * where in our case:
+ * - MANTISSA_SIZE for 64-bit doubles is 52
+ * - FRACTIONAL_SIZE for 16.16 fixed point is 16
+ *
+ * Although this approach provides a very large speedup of this function
+ * on a wide-array of systems, it does come with two caveats:
+ *
+ * 1) It uses banker's rounding as opposed to arithmetic rounding.
+ * 2) It doesn't function properly if the FPU is in single-precision
+ * mode.
+ */
+#define CAIRO_MAGIC_NUMBER_FIXED_16_16 (103079215104.0)
cairo_fixed_t
_cairo_fixed_from_double (double d)
{
- return (cairo_fixed_t) floor (d * 65536 + 0.5);
+ union {
+ double d;
+ int32_t i[2];
+ } u;
+
+ u.d = d + CAIRO_MAGIC_NUMBER_FIXED_16_16;
+#ifdef FLOAT_WORDS_BIGENDIAN
+ return u.i[1];
+#else
+ return u.i[0];
+#endif
}
cairo_fixed_t
--
1.2.6
From nobody Mon Sep 17 00:00:00 2001
From: Dan Amelang <dan amelang net>
Date: Tue Oct 31 23:47:35 2006 -0800
Subject: [PATCH] Add new perf test "pattern_create_radial"
This test is really just for hammering the double to fixed-point conversion
(in _cairo_fixed_from_double) that happens as doubles from API calls gets
translated into internal cairo fixed-point numbers.
Because it's not generally useful, I don't recommend that it become part of
the main cairo performance test. But hey, it might come in handy for someone
else.
---
perf/Makefile.am | 1
perf/cairo-perf.c | 1
perf/cairo-perf.h | 1
perf/pattern_create_radial.c | 98 ++++++++++++++++++++++++++++++++++++++++++
4 files changed, 101 insertions(+), 0 deletions(-)
create mode 100644 perf/pattern_create_radial.c
977383b86c68d0523c899efcba3cf8d36e94d2a7
diff --git a/perf/Makefile.am b/perf/Makefile.am
index 419a998..e1cfdc7 100644
--- a/perf/Makefile.am
+++ b/perf/Makefile.am
@@ -21,6 +21,7 @@ cairo_perf_SOURCES = \
stroke.c \
subimage_copy.c \
tessellate.c \
+ pattern_create_radial.c \
text.c
if CAIRO_HAS_WIN32_SURFACE
diff --git a/perf/cairo-perf.c b/perf/cairo-perf.c
index d9734c4..0707433 100644
--- a/perf/cairo-perf.c
+++ b/perf/cairo-perf.c
@@ -256,5 +256,6 @@ cairo_perf_case_t perf_cases[] = {
{ text, 64, 256},
{ tessellate, 100, 100},
{ subimage_copy, 16, 512},
+ { pattern_create_radial, 16, 16},
{ NULL }
};
diff --git a/perf/cairo-perf.h b/perf/cairo-perf.h
index 560ba64..faacff9 100644
--- a/perf/cairo-perf.h
+++ b/perf/cairo-perf.h
@@ -88,5 +88,6 @@ CAIRO_PERF_DECL (stroke);
CAIRO_PERF_DECL (subimage_copy);
CAIRO_PERF_DECL (tessellate);
CAIRO_PERF_DECL (text);
+CAIRO_PERF_DECL (pattern_create_radial);
#endif
diff --git a/perf/pattern_create_radial.c b/perf/pattern_create_radial.c
new file mode 100644
index 0000000..d793b7d
--- /dev/null
+++ b/perf/pattern_create_radial.c
@@ -0,0 +1,98 @@
+/*
+ * 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 amelang net>
+ *
+ * This test was originally created to test _cairo_fixed_from_double.
+ * cairo_pattern_create_radial was selected as the entry point into
+ * cairo as it makes several calls to _cairo_fixed_from_double and
+ * presents a somewhat realistic use-case (although the RADIALS_COUNT
+ * isn't very realistic).
+ */
+#include <time.h>
+#include "cairo-perf.h"
+
+#define RADIALS_COUNT (100000)
+
+static struct
+{
+ double cx0;
+ double cy0;
+ double radius0;
+ double cx1;
+ double cy1;
+ double radius1;
+} radials[RADIALS_COUNT];
+
+static double
+generate_double_in_range (double min, double max)
+{
+ double d;
+
+ d = rand () / (double) RAND_MAX;
+ d *= max - min;
+ d += min;
+
+ return d;
+}
+
+static cairo_perf_ticks_t
+do_pattern_create_radial (cairo_t *cr, int width, int height)
+{
+ int i;
+ cairo_pattern_t *pattern;
+
+ cairo_perf_timer_start ();
+
+ for (i = 0; i < RADIALS_COUNT; i++)
+ {
+ pattern = cairo_pattern_create_radial (radials[i].cx0, radials[i].cy0,
+ radials[i].radius0,
+ radials[i].cx1, radials[i].cy1,
+ radials[i].radius1);
+ cairo_pattern_destroy (pattern);
+ }
+
+ cairo_perf_timer_stop ();
+
+ return cairo_perf_timer_elapsed ();
+}
+
+void
+pattern_create_radial (cairo_perf_t *perf, cairo_t *cr, int width, int height)
+{
+ int i;
+
+ srand (time (0));
+ for (i = 0; i < RADIALS_COUNT; i++)
+ {
+ radials[i].cx0 = generate_double_in_range (-50000.0, 50000.0);
+ radials[i].cy0 = generate_double_in_range (-50000.0, 50000.0);
+ radials[i].radius0 = generate_double_in_range (0.0, 1000.0);
+ radials[i].cx1 = generate_double_in_range (-50000.0, 50000.0);
+ radials[i].cy1 = generate_double_in_range (-50000.0, 50000.0);
+ radials[i].radius1 = generate_double_in_range (0.0, 1000.0);
+ }
+
+ cairo_perf_run (perf, "pattern_create_radial",
+ do_pattern_create_radial);
+}
--
1.2.6
Speedups
========
image-rgb pattern_create_radial-16 83.77 0.16% -> 27.20 0.64%: 3.08x speedup
â??â??â??
image-rgba pattern_create_radial-16 83.76 0.25% -> 27.21 0.79%: 3.08x speedup
â??â??â??
xlib-rgba pattern_create_radial-16 90.05 0.33% -> 33.80 0.34%: 2.66x speedup
â??â??
xlib-rgb pattern_create_radial-16 90.85 0.57% -> 34.80 0.47%: 2.61x speedup
â??â??
image-rgba text_solid_rgb_over-64 0.99 1.06% -> 0.69 0.32%: 1.44x speedup
â??
image-rgba text_solid_rgba_over-64 0.99 0.46% -> 0.69 0.44%: 1.43x speedup
â??
image-rgba text_similar_rgb_over-64 1.02 1.54% -> 0.72 0.26%: 1.42x speedup
â??
image-rgb text_solid_rgba_over-64 0.99 0.74% -> 0.69 0.20%: 1.42x speedup
â??
image-rgba text_image_rgba_over-64 1.02 0.33% -> 0.72 0.06%: 1.42x speedup
â??
image-rgb text_image_rgb_over-64 1.01 0.36% -> 0.72 0.08%: 1.41x speedup
â??
image-rgb text_similar_rgba_over-64 1.03 1.16% -> 0.73 1.55%: 1.41x speedup
â??
image-rgba text_solid_rgb_over-256 6.82 1.50% -> 4.84 0.71%: 1.41x speedup
â??
image-rgb text_similar_rgb_over-64 1.02 0.21% -> 0.73 0.45%: 1.40x speedup
â??
image-rgba text_image_rgb_over-64 1.02 0.35% -> 0.73 1.62%: 1.40x speedup
â??
image-rgb text_solid_rgb_over-64 0.99 1.64% -> 0.71 2.56%: 1.40x speedup
â??
image-rgb text_image_rgba_over-64 1.02 0.31% -> 0.73 0.25%: 1.40x speedup
â??
image-rgba text_similar_rgba_over-64 1.02 0.47% -> 0.73 0.80%: 1.40x speedup
â??
image-rgba text_solid_rgba_over-128 1.72 0.92% -> 1.24 0.34%: 1.39x speedup
â??
image-rgba text_solid_rgb_over-128 1.72 0.64% -> 1.24 0.33%: 1.39x speedup
â??
image-rgba text_solid_rgba_over-256 6.68 0.70% -> 4.84 0.65%: 1.38x speedup
â??
image-rgb text_solid_rgb_over-128 1.72 0.87% -> 1.24 0.32%: 1.38x speedup
â??
image-rgb text_solid_rgba_over-256 6.70 0.49% -> 4.86 0.41%: 1.38x speedup
â??
image-rgb text_solid_rgb_over-256 6.68 0.75% -> 4.85 0.74%: 1.38x speedup
â??
image-rgb text_solid_rgba_over-128 1.72 0.95% -> 1.25 1.27%: 1.37x speedup
â??
image-rgba text_linear_rgb_over-64 1.15 0.97% -> 0.85 0.35%: 1.36x speedup
â??
image-rgb text_similar_rgba_over-128 1.92 1.28% -> 1.42 0.66%: 1.35x speedup
â??
image-rgba text_image_rgb_over-128 1.90 0.73% -> 1.41 0.19%: 1.35x speedup
â??
image-rgba text_image_rgb_over-256 7.42 0.14% -> 5.50 0.32%: 1.35x speedup
â??
image-rgba text_similar_rgba_over-128 1.90 0.83% -> 1.41 0.25%: 1.35x speedup
â??
image-rgb text_similar_rgb_over-256 7.43 1.06% -> 5.51 0.55%: 1.35x speedup
â??
image-rgba text_linear_rgba_over-64 1.15 0.29% -> 0.85 0.62%: 1.35x speedup
â??
image-rgb text_linear_rgba_over-64 1.14 0.26% -> 0.85 0.22%: 1.35x speedup
â??
image-rgba text_similar_rgb_over-128 1.90 0.99% -> 1.41 0.85%: 1.35x speedup
â??
image-rgba text_similar_rgba_over-256 7.42 0.58% -> 5.52 0.26%: 1.34x speedup
â??
image-rgb text_similar_rgb_over-128 1.90 0.94% -> 1.41 0.51%: 1.34x speedup
â??
image-rgba text_image_rgba_over-128 1.90 0.43% -> 1.41 0.29%: 1.34x speedup
â??
image-rgb text_image_rgba_over-256 7.41 0.70% -> 5.53 0.30%: 1.34x speedup
â??
image-rgba text_similar_rgb_over-256 7.39 0.50% -> 5.52 0.50%: 1.34x speedup
â??
image-rgb text_linear_rgb_over-64 1.14 0.31% -> 0.85 0.46%: 1.34x speedup
â??
image-rgb text_image_rgba_over-128 1.91 0.97% -> 1.42 0.79%: 1.34x speedup
â??
image-rgba text_image_rgba_over-256 7.41 0.27% -> 5.54 0.42%: 1.34x speedup
â??
image-rgb text_similar_rgba_over-256 7.40 0.42% -> 5.53 0.51%: 1.34x speedup
â??
image-rgb text_image_rgb_over-256 7.38 0.40% -> 5.52 0.55%: 1.34x speedup
â??
image-rgb text_image_rgb_over-128 1.89 0.59% -> 1.42 1.94%: 1.33x speedup
â??
image-rgba text_radial_rgba_over-64 1.24 0.28% -> 0.95 1.05%: 1.31x speedup
â??
image-rgba text_radial_rgb_over-64 1.25 0.60% -> 0.96 1.53%: 1.30x speedup
â??
image-rgb text_radial_rgb_over-64 1.24 0.29% -> 0.95 0.38%: 1.30x speedup
â??
image-rgb text_radial_rgba_over-64 1.24 0.43% -> 0.97 2.62%: 1.28x speedup
â??
xlib-rgba paint_solid_rgb_over-512 0.30 2.48% -> 0.24 2.04%: 1.28x speedup
â??
xlib-rgba paint_solid_rgb_source-512 0.30 0.66% -> 0.23 0.61%: 1.27x speedup
â??
image-rgba text_linear_rgba_over-128 2.39 0.86% -> 1.90 0.63%: 1.26x speedup
â??
image-rgb text_linear_rgb_over-128 2.39 1.02% -> 1.90 0.67%: 1.26x speedup
â??
xlib-rgba paint_solid_rgba_source-512 0.30 0.21% -> 0.24 1.70%: 1.26x speedup
â??
image-rgba text_linear_rgb_over-256 9.42 0.30% -> 7.53 0.73%: 1.25x speedup
â??
xlib-rgba text_similar_rgb_over-256 9.59 1.14% -> 7.68 0.48%: 1.25x speedup
â??
xlib-rgba text_similar_rgb_over-128 2.50 0.57% -> 2.01 0.32%: 1.25x speedup
â??
image-rgb text_linear_rgba_over-256 9.40 0.95% -> 7.55 0.95%: 1.25x speedup
â??
image-rgb text_linear_rgb_over-256 9.36 0.27% -> 7.52 0.27%: 1.24x speedup
â??
image-rgb text_linear_rgba_over-128 2.38 0.57% -> 1.91 1.50%: 1.24x speedup
â??
xlib-rgba text_similar_rgba_over-256 9.55 0.34% -> 7.69 0.56%: 1.24x speedup
â??
xlib-rgba text_similar_rgba_over-128 2.50 0.41% -> 2.01 0.84%: 1.24x speedup
â??
image-rgba text_linear_rgb_over-128 2.40 0.71% -> 1.93 2.32%: 1.24x speedup
â??
image-rgba text_linear_rgba_over-256 9.38 0.37% -> 7.58 0.68%: 1.24x speedup
â??
xlib-rgba text_solid_rgb_over-256 9.99 0.76% -> 8.08 0.32%: 1.24x speedup
â??
xlib-rgba text_solid_rgb_over-128 2.64 0.77% -> 2.14 0.65%: 1.24x speedup
â??
xlib-rgba text_solid_rgba_over-256 9.89 0.23% -> 8.09 0.48%: 1.22x speedup
â??
xlib-rgba text_solid_rgba_over-128 2.62 1.14% -> 2.15 1.11%: 1.22x speedup
â??
image-rgba text_radial_rgb_over-128 2.84 1.77% -> 2.34 0.55%: 1.22x speedup
â??
image-rgba text_radial_rgba_over-128 2.84 1.35% -> 2.34 0.57%: 1.21x speedup
â??
image-rgb text_radial_rgba_over-128 2.81 0.77% -> 2.33 0.43%: 1.21x speedup
â??
xlib-rgba text_image_rgb_over-128 2.83 0.57% -> 2.35 0.79%: 1.21x speedup
â??
image-rgb text_radial_rgb_over-128 2.83 0.78% -> 2.34 0.78%: 1.21x speedup
â??
image-rgba text_radial_rgba_over-256 11.17 0.31% -> 9.27 0.64%: 1.20x speedup
â??
image-rgb text_radial_rgba_over-256 11.14 0.47% -> 9.26 0.46%: 1.20x speedup
â??
xlib-rgba text_image_rgba_over-128 2.83 0.52% -> 2.35 1.11%: 1.20x speedup
â??
image-rgba text_radial_rgb_over-256 11.17 0.33% -> 9.36 1.30%: 1.19x speedup
â??
xlib-rgba text_image_rgba_over-256 11.66 0.62% -> 9.78 0.54%: 1.19x speedup
â??
xlib-rgba text_image_rgb_over-256 11.64 0.51% -> 9.78 0.32%: 1.19x speedup
â??
image-rgba text_similar_rgba_source-64 1.21 1.18% -> 1.02 0.16%: 1.19x speedup
â??
image-rgba text_image_rgb_source-64 1.21 0.30% -> 1.02 0.16%: 1.19x speedup
â??
image-rgb text_radial_rgb_over-256 11.10 0.42% -> 9.36 1.51%: 1.19x speedup
â??
image-rgb text_image_rgba_source-64 1.21 2.42% -> 1.02 1.61%: 1.19x speedup
â??
image-rgb text_solid_rgb_source-64 1.22 0.94% -> 1.03 0.43%: 1.18x speedup
â??
image-rgb text_similar_rgb_source-64 1.20 0.30% -> 1.01 0.29%: 1.18x speedup
â??
image-rgb text_image_rgb_source-64 1.19 0.26% -> 1.01 0.49%: 1.18x speedup
â??
image-rgb text_similar_rgba_source-64 1.21 0.26% -> 1.02 0.48%: 1.18x speedup
â??
image-rgba text_similar_rgb_source-64 1.20 0.24% -> 1.02 0.28%: 1.18x speedup
â??
image-rgba subimage_copy-256 0.01 1.27% -> 0.01 1.17%: 1.17x speedup
â??
image-rgb text_solid_rgba_source-64 1.22 0.97% -> 1.04 1.14%: 1.17x speedup
â??
image-rgba text_image_rgba_source-64 1.20 0.27% -> 1.02 1.47%: 1.17x speedup
â??
image-rgb subimage_copy-64 0.01 0.98% -> 0.01 1.41%: 1.17x speedup
â??
image-rgba subimage_copy-512 0.01 2.46% -> 0.01 1.63%: 1.17x speedup
â??
image-rgba text_solid_rgb_source-64 1.23 1.35% -> 1.05 1.42%: 1.17x speedup
â??
image-rgba text_solid_rgba_source-64 1.22 0.47% -> 1.05 1.32%: 1.17x speedup
â??
image-rgb subimage_copy-32 0.01 1.04% -> 0.01 1.75%: 1.17x speedup
â??
image-rgba text_linear_rgba_source-64 1.34 1.03% -> 1.15 0.18%: 1.17x speedup
â??
image-rgba subimage_copy-16 0.01 0.92% -> 0.01 1.40%: 1.16x speedup
â??
image-rgb subimage_copy-256 0.01 1.34% -> 0.01 2.40%: 1.16x speedup
â??
image-rgba text_linear_rgb_source-64 1.35 0.29% -> 1.16 0.32%: 1.16x speedup
â??
image-rgba subimage_copy-128 0.01 1.11% -> 0.01 1.37%: 1.16x speedup
â??
image-rgba subimage_copy-64 0.01 1.23% -> 0.01 1.00%: 1.16x speedup
â??
image-rgb text_radial_rgb_source-64 1.43 1.01% -> 1.24 0.21%: 1.16x speedup
â??
image-rgb text_linear_rgb_source-64 1.34 0.89% -> 1.16 1.08%: 1.16x speedup
â??
image-rgba subimage_copy-32 0.01 1.33% -> 0.01 1.73%: 1.15x speedup
â??
image-rgba text_radial_rgba_source-64 1.45 0.90% -> 1.26 0.76%: 1.15x speedup
â??
image-rgba text_radial_rgb_source-64 1.44 0.88% -> 1.25 0.44%: 1.15x speedup
â??
image-rgb text_linear_rgba_source-64 1.33 1.00% -> 1.16 1.84%: 1.15x speedup
â??
image-rgb text_similar_rgb_source-128 2.55 1.00% -> 2.23 0.61%: 1.14x speedup
â??
image-rgb text_solid_rgb_source-128 2.54 0.72% -> 2.23 0.17%: 1.14x speedup
â??
image-rgb text_radial_rgba_source-64 1.43 0.79% -> 1.25 1.07%: 1.14x speedup
â??
image-rgba text_solid_rgb_source-256 10.17 2.18% -> 8.94 0.66%: 1.14x speedup
â??
xlib-rgba text_linear_rgb_over-256 17.02 1.81% -> 14.99 0.20%: 1.14x speedup
â??
image-rgba text_image_rgba_source-256 10.00 0.44% -> 8.80 0.69%: 1.14x speedup
â??
xlib-rgba text_linear_rgba_over-256 16.95 1.21% -> 14.93 0.47%: 1.14x speedup
â??
image-rgba text_solid_rgb_source-128 2.55 0.17% -> 2.24 0.17%: 1.14x speedup
â??
image-rgba text_similar_rgb_source-128 2.53 0.57% -> 2.23 0.56%: 1.14x speedup
â??
image-rgb text_similar_rgba_source-256 9.91 0.52% -> 8.73 0.41%: 1.14x speedup
â??
image-rgb subimage_copy-128 0.01 1.51% -> 0.01 0.68%: 1.13x speedup
â??
image-rgb text_image_rgba_source-128 2.52 0.58% -> 2.23 0.56%: 1.13x speedup
â??
xlib-rgba text_linear_rgba_over-128 4.30 0.48% -> 3.80 0.37%: 1.13x speedup
â??
image-rgba text_image_rgba_source-128 2.54 0.61% -> 2.24 0.79%: 1.13x speedup
â??
xlib-rgba text_linear_rgb_over-128 4.31 0.37% -> 3.81 0.62%: 1.13x speedup
â??
xlib-rgba text_image_rgba_source-64 1.73 0.82% -> 1.52 0.23%: 1.13x speedup
â??
image-rgba text_image_rgb_source-128 2.54 0.36% -> 2.24 0.67%: 1.13x speedup
â??
image-rgb text_similar_rgb_source-256 9.89 0.31% -> 8.73 0.27%: 1.13x speedup
â??
xlib-rgba text_solid_rgba_source-64 1.63 0.80% -> 1.44 0.30%: 1.13x speedup
â??
image-rgba text_similar_rgb_source-256 9.96 0.43% -> 8.79 0.56%: 1.13x speedup
â??
image-rgba text_image_rgb_source-256 9.95 0.23% -> 8.79 0.66%: 1.13x speedup
â??
image-rgb text_solid_rgb_source-256 9.99 0.35% -> 8.83 0.29%: 1.13x speedup
â??
image-rgb text_image_rgb_source-128 2.52 1.19% -> 2.23 0.92%: 1.13x speedup
â??
image-rgba text_solid_rgba_source-256 10.07 0.46% -> 8.91 0.41%: 1.13x speedup
â??
image-rgba text_similar_rgba_source-256 9.96 0.34% -> 8.81 0.30%: 1.13x speedup
â??
image-rgb text_solid_rgba_source-128 2.53 0.58% -> 2.24 0.94%: 1.13x speedup
â??
xlib-rgba text_similar_rgb_source-64 1.57 0.11% -> 1.39 0.87%: 1.13x speedup
â??
image-rgb subimage_copy-512 0.01 0.59% -> 0.01 0.51%: 1.13x speedup
â??
image-rgb text_image_rgb_source-256 9.88 0.23% -> 8.76 0.53%: 1.13x speedup
â??
image-rgb subimage_copy-16 0.01 0.85% -> 0.01 1.28%: 1.13x speedup
â??
image-rgb text_solid_rgba_source-256 10.00 0.32% -> 8.87 0.15%: 1.13x speedup
â??
image-rgba text_solid_rgba_source-128 2.55 0.67% -> 2.27 1.07%: 1.13x speedup
â??
image-rgb text_similar_rgba_source-128 2.52 0.27% -> 2.24 0.83%: 1.13x speedup
â??
xlib-rgba text_image_rgb_source-64 1.72 0.66% -> 1.53 0.86%: 1.13x speedup
â??
image-rgba text_similar_rgba_source-128 2.53 0.17% -> 2.25 1.01%: 1.13x speedup
â??
xlib-rgba text_solid_rgb_source-64 1.63 1.03% -> 1.45 1.23%: 1.13x speedup
â??
image-rgb text_image_rgba_source-256 9.96 1.21% -> 8.87 1.79%: 1.12x speedup
â??
xlib-rgba text_similar_rgba_source-64 1.57 0.24% -> 1.40 1.43%: 1.12x speedup
â??
image-rgb text_linear_rgba_source-128 3.03 0.86% -> 2.72 0.70%: 1.11x speedup
â??
image-rgba text_linear_rgba_source-128 3.03 0.44% -> 2.72 0.38%: 1.11x speedup
â??
xlib-rgba text_linear_rgb_source-64 2.14 1.14% -> 1.93 0.34%: 1.11x speedup
â??
image-rgb text_linear_rgba_source-256 11.93 0.42% -> 10.78 1.08%: 1.11x speedup
â??
xlib-rgba text_linear_rgba_source-64 2.13 0.96% -> 1.93 0.67%: 1.11x speedup
â??
image-rgb text_linear_rgb_source-256 11.85 0.23% -> 10.73 0.41%: 1.10x speedup
â??
image-rgb text_linear_rgb_source-128 3.02 0.63% -> 2.74 2.01%: 1.10x speedup
â??
image-rgba text_linear_rgb_source-128 3.04 0.81% -> 2.76 0.89%: 1.10x speedup
â??
image-rgba text_linear_rgb_source-256 11.96 0.68% -> 10.85 0.60%: 1.10x speedup
â??
image-rgb text_radial_rgb_source-128 3.44 0.42% -> 3.12 0.24%: 1.10x speedup
â??
image-rgba text_linear_rgba_source-256 11.92 0.21% -> 10.82 0.90%: 1.10x speedup
â??
xlib-rgba text_image_rgb_source-128 3.91 1.15% -> 3.55 0.93%: 1.10x speedup
â??
xlib-rgba text_similar_rgb_source-128 3.40 0.55% -> 3.09 1.11%: 1.10x speedup
â??
image-rgb tessellate-64-100 10.97 0.42% -> 9.98 0.51%: 1.10x speedup
â??
xlib-rgba tessellate-64-100 11.00 0.58% -> 10.02 0.73%: 1.10x speedup
â??
image-rgba text_radial_rgb_source-128 3.48 0.83% -> 3.17 0.94%: 1.10x speedup
â??
xlib-rgba text_similar_rgb_source-256 13.14 0.22% -> 11.98 0.37%: 1.10x speedup
â??
xlib-rgb text_solid_rgba_over-64 3.66 0.81% -> 3.34 0.38%: 1.09x speedup
â??
image-rgba tessellate-16-100 0.10 0.47% -> 0.09 0.49%: 1.09x speedup
â??
image-rgb text_radial_rgb_source-256 13.81 1.34% -> 12.62 1.49%: 1.09x speedup
â??
image-rgba text_radial_rgba_source-128 3.48 0.59% -> 3.18 0.53%: 1.09x speedup
â??
xlib-rgb tessellate-64-100 10.97 0.38% -> 10.03 0.46%: 1.09x speedup
â??
xlib-rgba text_solid_rgba_source-128 3.46 0.42% -> 3.16 0.72%: 1.09x speedup
â??
xlib-rgba text_radial_rgba_over-128 5.94 0.28% -> 5.43 0.74%: 1.09x speedup
â??
xlib-rgba text_similar_rgba_source-128 3.39 0.44% -> 3.10 0.93%: 1.09x speedup
â??
xlib-rgb text_similar_rgb_over-64 3.57 0.59% -> 3.27 0.91%: 1.09x speedup
â??
image-rgb tessellate-16-100 0.10 0.36% -> 0.09 0.41%: 1.09x speedup
â??
xlib-rgba text_similar_rgba_source-256 13.17 0.45% -> 12.06 0.64%: 1.09x speedup
â??
image-rgba text_radial_rgb_source-256 13.69 0.56% -> 12.54 0.38%: 1.09x speedup
â??
image-rgb text_radial_rgba_source-128 3.43 0.36% -> 3.14 0.47%: 1.09x speedup
â??
xlib-rgba text_solid_rgb_source-256 13.46 0.32% -> 12.34 0.69%: 1.09x speedup
â??
xlib-rgb text_solid_rgb_over-64 3.67 0.61% -> 3.36 1.46%: 1.09x speedup
â??
xlib-rgba text_solid_rgba_source-256 13.44 0.28% -> 12.33 0.14%: 1.09x speedup
â??
xlib-rgb text_image_rgba_over-64 3.71 0.90% -> 3.41 0.47%: 1.09x speedup
â??
image-rgba tessellate-64-100 10.93 0.45% -> 10.04 0.76%: 1.09x speedup
â??
image-rgba tessellate-256-100 840.18 0.46% -> 772.02 0.22%: 1.09x speedup
â??
xlib-rgba text_radial_rgb_over-128 5.92 0.67% -> 5.44 0.57%: 1.09x speedup
â??
xlib-rgb tessellate-256-100 838.29 0.31% -> 770.45 0.08%: 1.09x speedup
â??
xlib-rgba text_image_rgba_source-128 3.86 0.75% -> 3.55 0.54%: 1.09x speedup
â??
image-rgba text_radial_rgba_source-256 13.63 0.39% -> 12.54 0.38%: 1.09x speedup
â??
xlib-rgb text_image_rgb_over-64 3.71 0.44% -> 3.42 0.98%: 1.09x speedup
â??
image-rgb text_radial_rgba_source-256 13.54 0.15% -> 12.46 0.56%: 1.09x speedup
â??
xlib-rgba tessellate-256-100 837.04 0.21% -> 770.85 0.11%: 1.09x speedup
â??
xlib-rgba text_image_rgb_source-256 15.51 0.47% -> 14.28 0.55%: 1.09x speedup
â??
xlib-rgba text_radial_rgba_over-256 23.43 0.95% -> 21.58 0.54%: 1.09x speedup
â??
xlib-rgba text_solid_rgb_source-128 3.46 0.38% -> 3.19 1.11%: 1.08x speedup
â??
xlib-rgb text_linear_rgba_over-64 4.13 0.52% -> 3.81 0.49%: 1.08x speedup
â??
xlib-rgba text_image_rgba_source-256 15.48 0.39% -> 14.28 0.39%: 1.08x speedup
â??
image-rgb tessellate-256-100 836.88 0.07% -> 772.21 0.29%: 1.08x speedup
â??
xlib-rgb text_similar_rgba_over-64 3.59 1.09% -> 3.31 1.47%: 1.08x speedup
â??
xlib-rgba text_radial_rgb_source-64 2.52 0.62% -> 2.34 0.73%: 1.08x speedup
â??
xlib-rgba text_radial_rgba_source-64 2.54 1.14% -> 2.35 1.30%: 1.08x speedup
â??
xlib-rgb text_linear_rgb_over-64 4.13 0.58% -> 3.83 1.20%: 1.08x speedup
â??
xlib-rgba text_radial_rgb_over-256 23.49 1.39% -> 21.80 1.05%: 1.08x speedup
â??
xlib-rgba tessellate-16-100 0.13 0.30% -> 0.12 0.07%: 1.08x speedup
â??
xlib-rgb text_radial_rgb_over-64 4.51 0.43% -> 4.21 0.61%: 1.07x speedup
â??
xlib-rgb text_radial_rgba_over-64 4.51 0.74% -> 4.22 0.94%: 1.07x speedup
â??
xlib-rgb tessellate-16-100 0.13 0.44% -> 0.12 0.40%: 1.07x speedup
â??
xlib-rgba text_linear_rgb_source-256 20.64 0.37% -> 19.33 0.15%: 1.07x speedup
â??
xlib-rgba text_linear_rgba_source-256 20.60 0.16% -> 19.32 0.17%: 1.07x speedup
â??
xlib-rgba text_linear_rgb_source-128 5.35 0.78% -> 5.02 0.47%: 1.06x speedup
â??
image-rgb paint_solid_rgba_source-512 0.40 0.38% -> 0.38 0.02%: 1.06x speedup
xlib-rgba text_linear_rgba_source-128 5.33 0.34% -> 5.05 0.95%: 1.06x speedup
image-rgb paint_solid_rgb_source-512 0.40 0.24% -> 0.38 0.10%: 1.05x speedup
Slowdowns
=========
image-rgba paint_solid_rgba_source-512 0.39 0.35% -> 0.44 1.50%: 1.11x slowdown
â??
image-rgba paint_solid_rgb_source-512 0.39 0.18% -> 0.43 0.94%: 1.11x slowdown
â??
image-rgb fill_radial_rgb_source-256 5.62 0.45% -> 5.90 0.92%: 1.05x slowdown
Speedups
========
image-rgba pattern_create_radial-16 223.32 0.15% -> 73.96 0.53%: 3.02x speedup
â??â??
image-rgb pattern_create_radial-16 223.22 0.12% -> 73.92 0.19%: 3.02x speedup
â??â??
xlib-rgba pattern_create_radial-16 231.80 1.24% -> 80.01 0.18%: 2.90x speedup
â??â??
xlib-rgb pattern_create_radial-16 230.20 0.07% -> 80.05 0.29%: 2.88x speedup
â??â??
xlib-rgb tessellate-256-100 598.99 2.44% -> 388.02 0.50%: 1.54x speedup
â??
image-rgb tessellate-256-100 594.26 2.75% -> 386.08 0.97%: 1.54x speedup
â??
xlib-rgba tessellate-256-100 589.64 0.75% -> 385.57 0.71%: 1.53x speedup
â??
image-rgba tessellate-256-100 587.09 0.26% -> 387.92 0.95%: 1.51x speedup
â??
image-rgba text_image_rgba_over-64 2.25 1.48% -> 1.65 0.33%: 1.36x speedup
â??
image-rgba text_image_rgb_over-64 2.23 1.30% -> 1.64 0.29%: 1.36x speedup
â??
image-rgb text_similar_rgba_over-64 2.23 0.66% -> 1.64 0.21%: 1.36x speedup
â??
image-rgb text_image_rgb_over-64 2.21 0.52% -> 1.64 0.22%: 1.35x speedup
â??
image-rgba text_solid_rgb_over-64 2.21 1.41% -> 1.64 1.90%: 1.35x speedup
â??
image-rgba text_similar_rgba_over-64 2.23 1.22% -> 1.66 0.75%: 1.35x speedup
â??
image-rgba text_similar_rgb_over-64 2.22 0.69% -> 1.65 0.30%: 1.35x speedup
â??
image-rgba text_solid_rgba_over-64 2.19 1.26% -> 1.63 1.08%: 1.35x speedup
â??
image-rgb text_solid_rgba_over-128 3.71 0.98% -> 2.76 0.65%: 1.34x speedup
â??
image-rgb text_solid_rgba_over-64 2.18 0.25% -> 1.63 1.14%: 1.34x speedup
â??
image-rgb text_solid_rgba_over-256 14.33 0.63% -> 10.67 0.35%: 1.34x speedup
â??
image-rgba text_linear_rgba_over-64 2.37 1.32% -> 1.77 0.22%: 1.34x speedup
â??
image-rgb text_solid_rgb_over-256 14.34 0.55% -> 10.72 0.66%: 1.34x speedup
â??
image-rgb text_solid_rgb_over-64 2.18 0.19% -> 1.63 1.36%: 1.34x speedup
â??
image-rgba text_solid_rgb_over-256 14.32 0.58% -> 10.72 0.65%: 1.34x speedup
â??
image-rgba text_solid_rgba_over-128 3.70 0.37% -> 2.77 1.02%: 1.34x speedup
â??
image-rgba text_solid_rgba_over-256 14.31 0.15% -> 10.72 0.54%: 1.34x speedup
â??
image-rgb text_solid_rgb_over-128 3.70 0.87% -> 2.77 1.17%: 1.33x speedup
â??
image-rgba text_solid_rgb_over-128 3.69 0.65% -> 2.77 0.66%: 1.33x speedup
â??
image-rgb text_image_rgb_over-256 15.11 0.75% -> 11.39 0.33%: 1.33x speedup
â??
image-rgba text_linear_rgb_over-64 2.36 0.73% -> 1.78 0.20%: 1.33x speedup
â??
image-rgba text_similar_rgba_over-128 3.88 0.65% -> 2.93 0.33%: 1.32x speedup
â??
image-rgb text_similar_rgba_over-128 3.87 0.51% -> 2.93 0.76%: 1.32x speedup
â??
image-rgb text_image_rgba_over-64 2.21 0.57% -> 1.67 1.49%: 1.32x speedup
â??
image-rgb text_similar_rgb_over-128 3.86 0.73% -> 2.93 0.56%: 1.32x speedup
â??
image-rgba text_similar_rgb_over-128 3.86 0.36% -> 2.92 0.35%: 1.32x speedup
â??
image-rgba text_image_rgb_over-256 15.04 0.59% -> 11.39 0.50%: 1.32x speedup
â??
image-rgb text_linear_rgb_over-64 2.35 0.55% -> 1.78 0.82%: 1.32x speedup
â??
image-rgba text_image_rgb_over-128 3.86 0.70% -> 2.93 0.53%: 1.32x speedup
â??
image-rgb text_similar_rgb_source-64 2.58 2.24% -> 1.96 0.75%: 1.32x speedup
â??
image-rgb text_linear_rgba_over-64 2.35 0.45% -> 1.78 1.00%: 1.32x speedup
â??
image-rgb text_similar_rgb_over-64 2.21 0.26% -> 1.68 2.10%: 1.32x speedup
â??
image-rgb text_image_rgba_over-256 15.04 0.34% -> 11.43 0.26%: 1.32x speedup
â??
image-rgb text_solid_rgba_source-64 2.60 1.11% -> 1.97 0.78%: 1.32x speedup
â??
image-rgba text_similar_rgb_source-64 2.57 0.73% -> 1.95 0.24%: 1.32x speedup
â??
image-rgba text_similar_rgba_over-256 15.03 0.36% -> 11.43 0.53%: 1.32x speedup
â??
image-rgba text_image_rgba_over-256 15.08 0.77% -> 11.47 0.79%: 1.32x speedup
â??
image-rgb text_similar_rgba_over-256 15.03 0.49% -> 11.43 0.80%: 1.31x speedup
â??
image-rgba text_image_rgba_source-64 2.58 1.25% -> 1.96 0.71%: 1.31x speedup
â??
image-rgba text_similar_rgb_over-256 15.01 0.49% -> 11.43 0.54%: 1.31x speedup
â??
image-rgba text_solid_rgb_source-64 2.60 0.74% -> 1.98 0.42%: 1.31x speedup
â??
image-rgba text_solid_rgba_source-64 2.59 0.60% -> 1.97 0.19%: 1.31x speedup
â??
image-rgb text_image_rgba_over-128 3.86 0.35% -> 2.94 0.55%: 1.31x speedup
â??
image-rgb text_similar_rgb_over-256 14.99 0.20% -> 11.43 0.61%: 1.31x speedup
â??
image-rgb text_image_rgba_source-64 2.56 0.72% -> 1.95 0.22%: 1.31x speedup
â??
image-rgba text_image_rgba_over-128 3.87 0.52% -> 2.95 1.05%: 1.31x speedup
â??
image-rgb text_solid_rgb_source-64 2.59 0.80% -> 1.98 1.37%: 1.31x speedup
â??
image-rgb text_image_rgb_source-64 2.57 0.64% -> 1.96 1.06%: 1.31x speedup
â??
image-rgb text_image_rgb_over-128 3.84 0.27% -> 2.94 0.88%: 1.31x speedup
â??
image-rgba text_image_rgb_source-64 2.58 0.94% -> 1.97 1.33%: 1.31x speedup
â??
image-rgba text_similar_rgba_source-64 2.57 0.39% -> 1.96 0.64%: 1.31x speedup
â??
image-rgb text_similar_rgba_source-64 2.58 1.02% -> 1.97 0.78%: 1.31x speedup
â??
image-rgb text_linear_rgb_source-64 2.71 1.11% -> 2.09 0.82%: 1.30x speedup
â??
image-rgb text_linear_rgba_source-64 2.71 0.84% -> 2.10 0.66%: 1.29x speedup
â??
image-rgb subimage_copy-512 0.01 2.85% -> 0.01 0.54%: 1.29x speedup
â??
image-rgba text_linear_rgba_source-64 2.70 0.21% -> 2.10 0.77%: 1.29x speedup
â??
image-rgba text_linear_rgba_over-128 4.38 0.80% -> 3.42 0.33%: 1.28x speedup
â??
xlib-rgba text_similar_rgba_over-128 4.55 1.34% -> 3.56 0.48%: 1.28x speedup
â??
image-rgb text_solid_rgba_source-256 18.94 2.64% -> 14.84 0.29%: 1.28x speedup
â??
xlib-rgba text_image_rgba_over-128 4.94 2.37% -> 3.87 0.37%: 1.28x speedup
â??
image-rgb text_image_rgb_source-256 18.86 1.08% -> 14.78 0.30%: 1.28x speedup
â??
image-rgba text_image_rgba_source-128 4.82 0.83% -> 3.78 0.31%: 1.27x speedup
â??
xlib-rgba text_similar_rgba_source-64 2.97 1.23% -> 2.33 0.49%: 1.27x speedup
â??
image-rgba text_linear_rgb_source-64 2.71 0.58% -> 2.13 2.78%: 1.27x speedup
â??
image-rgb text_solid_rgb_source-128 4.81 0.89% -> 3.78 0.72%: 1.27x speedup
â??
image-rgb text_image_rgb_source-128 4.80 0.95% -> 3.78 0.39%: 1.27x speedup
â??
image-rgb text_linear_rgb_over-128 4.38 0.54% -> 3.46 0.99%: 1.27x speedup
â??
image-rgba text_solid_rgba_source-128 4.83 0.65% -> 3.81 0.51%: 1.27x speedup
â??
image-rgba text_linear_rgba_over-256 17.05 0.33% -> 13.46 0.35%: 1.27x speedup
â??
image-rgba text_similar_rgb_source-128 4.80 1.13% -> 3.79 0.90%: 1.27x speedup
â??
image-rgb text_linear_rgba_over-256 17.06 0.26% -> 13.47 0.56%: 1.27x speedup
â??
image-rgb text_similar_rgba_source-256 18.73 0.63% -> 14.79 0.24%: 1.27x speedup
â??
image-rgba text_image_rgb_source-128 4.80 0.65% -> 3.79 0.50%: 1.27x speedup
â??
image-rgb text_linear_rgba_over-128 4.37 0.51% -> 3.45 0.65%: 1.27x speedup
â??
image-rgba text_similar_rgba_source-128 4.79 0.57% -> 3.79 0.40%: 1.27x speedup
â??
xlib-rgba text_similar_rgb_over-128 4.49 0.52% -> 3.55 0.80%: 1.26x speedup
â??
xlib-rgba text_similar_rgb_source-64 2.95 0.69% -> 2.34 0.72%: 1.26x speedup
â??
image-rgba text_similar_rgba_source-256 18.75 0.64% -> 14.83 0.25%: 1.26x speedup
â??
image-rgb text_solid_rgba_source-128 4.79 0.62% -> 3.79 0.41%: 1.26x speedup
â??
image-rgba text_linear_rgb_over-256 17.05 0.34% -> 13.49 0.53%: 1.26x speedup
â??
image-rgb text_similar_rgb_source-256 18.66 0.45% -> 14.77 0.34%: 1.26x speedup
â??
image-rgba text_image_rgb_source-256 18.68 0.25% -> 14.78 0.30%: 1.26x speedup
â??
image-rgba text_solid_rgb_source-128 4.83 1.09% -> 3.82 1.08%: 1.26x speedup
â??
image-rgb text_similar_rgba_source-128 4.77 0.49% -> 3.77 0.30%: 1.26x speedup
â??
image-rgb text_linear_rgb_over-256 17.05 0.11% -> 13.52 0.57%: 1.26x speedup
â??
image-rgb text_image_rgba_source-128 4.77 0.46% -> 3.79 0.82%: 1.26x speedup
â??
image-rgb text_similar_rgb_source-128 4.77 0.60% -> 3.78 0.45%: 1.26x speedup
â??
xlib-rgba text_solid_rgb_source-64 3.03 1.51% -> 2.41 0.96%: 1.26x speedup
â??
image-rgba text_solid_rgba_source-256 18.77 0.32% -> 14.91 0.40%: 1.26x speedup
â??
image-rgba text_image_rgba_source-256 18.72 0.29% -> 14.88 0.32%: 1.26x speedup
â??
image-rgba text_similar_rgb_source-256 18.65 0.45% -> 14.83 0.39%: 1.26x speedup
â??
image-rgba text_linear_rgba_source-128 5.40 2.84% -> 4.29 0.61%: 1.26x speedup
â??
xlib-rgba text_solid_rgba_over-128 4.62 0.29% -> 3.68 1.31%: 1.26x speedup
â??
image-rgb text_image_rgba_source-256 18.62 0.32% -> 14.82 0.64%: 1.26x speedup
â??
xlib-rgba text_similar_rgb_over-256 17.25 0.33% -> 13.74 0.56%: 1.26x speedup
â??
image-rgba text_linear_rgb_over-128 4.39 0.82% -> 3.50 2.15%: 1.26x speedup
â??
image-rgba text_solid_rgb_source-256 18.75 0.25% -> 14.95 0.56%: 1.25x speedup
â??
image-rgb text_solid_rgb_source-256 18.70 0.33% -> 14.91 0.53%: 1.25x speedup
â??
xlib-rgba text_similar_rgba_over-256 17.27 0.36% -> 13.79 0.40%: 1.25x speedup
â??
xlib-rgba text_image_rgba_source-64 3.11 0.86% -> 2.48 0.62%: 1.25x speedup
â??
xlib-rgba text_solid_rgb_over-128 4.61 0.57% -> 3.69 0.91%: 1.25x speedup
â??
xlib-rgba text_solid_rgba_over-256 17.63 0.34% -> 14.12 0.26%: 1.25x speedup
â??
xlib-rgba text_solid_rgba_source-64 3.00 0.46% -> 2.40 0.92%: 1.25x speedup
â??
xlib-rgba text_image_rgb_over-128 4.82 0.52% -> 3.87 0.42%: 1.25x speedup
â??
image-rgb subimage_copy-16 0.01 2.67% -> 0.01 0.97%: 1.24x speedup
â??
xlib-rgba text_image_rgb_source-64 3.08 0.29% -> 2.48 0.66%: 1.24x speedup
â??
xlib-rgba text_solid_rgb_over-256 17.65 0.44% -> 14.28 1.10%: 1.24x speedup
â??
image-rgb text_linear_rgb_source-128 5.28 0.21% -> 4.28 0.37%: 1.24x speedup
â??
image-rgba subimage_copy-512 0.01 2.66% -> 0.01 0.44%: 1.24x speedup
â??
image-rgba subimage_copy-16 0.01 2.21% -> 0.01 1.62%: 1.23x speedup
â??
image-rgba text_linear_rgb_source-128 5.31 0.49% -> 4.31 0.61%: 1.23x speedup
â??
xlib-rgba text_linear_rgba_source-64 3.60 1.35% -> 2.92 0.67%: 1.23x speedup
â??
image-rgb text_linear_rgba_source-256 20.63 0.39% -> 16.80 0.26%: 1.23x speedup
â??
image-rgb text_linear_rgba_source-128 5.29 0.68% -> 4.31 1.16%: 1.23x speedup
â??
image-rgb text_linear_rgb_source-256 20.66 0.13% -> 16.84 0.31%: 1.23x speedup
â??
image-rgba text_linear_rgba_source-256 20.72 0.54% -> 16.91 0.47%: 1.23x speedup
â??
image-rgb subimage_copy-32 0.01 0.32% -> 0.01 0.50%: 1.22x speedup
â??
xlib-rgba text_similar_rgba_source-128 5.70 0.89% -> 4.66 0.48%: 1.22x speedup
â??
image-rgba text_linear_rgb_source-256 20.66 0.24% -> 16.91 0.52%: 1.22x speedup
â??
xlib-rgba text_solid_rgba_source-128 5.75 0.43% -> 4.72 0.55%: 1.22x speedup
â??
image-rgba subimage_copy-128 0.01 0.34% -> 0.01 1.23%: 1.22x speedup
â??
image-rgba subimage_copy-64 0.01 0.38% -> 0.01 1.34%: 1.22x speedup
â??
image-rgb subimage_copy-256 0.01 0.75% -> 0.01 0.57%: 1.22x speedup
â??
image-rgb subimage_copy-64 0.01 0.57% -> 0.01 0.57%: 1.21x speedup
â??
xlib-rgba text_image_rgb_over-256 19.39 0.19% -> 15.98 0.28%: 1.21x speedup
â??
image-rgba subimage_copy-32 0.01 0.40% -> 0.01 0.86%: 1.21x speedup
â??
image-rgb subimage_copy-128 0.01 0.50% -> 0.01 0.75%: 1.21x speedup
â??
image-rgba subimage_copy-256 0.01 0.27% -> 0.01 0.48%: 1.21x speedup
â??
xlib-rgba text_solid_rgb_source-128 5.74 0.50% -> 4.74 0.71%: 1.21x speedup
â??
xlib-rgba text_similar_rgb_source-128 5.67 0.63% -> 4.68 0.88%: 1.21x speedup
â??
xlib-rgba text_similar_rgba_source-256 22.02 0.32% -> 18.21 0.29%: 1.21x speedup
â??
xlib-rgba text_similar_rgb_source-256 21.97 0.33% -> 18.19 0.28%: 1.21x speedup
â??
xlib-rgba text_solid_rgba_source-256 22.26 0.25% -> 18.45 0.20%: 1.21x speedup
â??
xlib-rgba text_image_rgba_source-128 6.19 1.58% -> 5.14 0.96%: 1.21x speedup
â??
xlib-rgba text_solid_rgb_source-256 22.28 0.31% -> 18.51 0.35%: 1.20x speedup
â??
xlib-rgba text_image_rgba_over-256 19.36 0.31% -> 16.20 1.29%: 1.19x speedup
â??
xlib-rgba text_image_rgb_source-128 6.14 0.61% -> 5.14 0.86%: 1.19x speedup
â??
xlib-rgba text_linear_rgb_source-64 3.56 0.38% -> 2.99 2.83%: 1.19x speedup
â??
xlib-rgba text_linear_rgb_over-128 6.43 1.02% -> 5.42 0.64%: 1.19x speedup
â??
xlib-rgba text_linear_rgba_over-128 6.43 0.46% -> 5.43 0.55%: 1.18x speedup
â??
xlib-rgba text_image_rgba_source-256 24.37 0.38% -> 20.67 0.35%: 1.18x speedup
â??
xlib-rgba text_image_rgb_source-256 24.29 0.38% -> 20.63 0.29%: 1.18x speedup
â??
xlib-rgba text_linear_rgb_over-256 25.26 0.67% -> 21.52 0.69%: 1.17x speedup
â??
xlib-rgba text_linear_rgba_over-256 25.06 0.18% -> 21.44 0.25%: 1.17x speedup
â??
xlib-rgba text_linear_rgb_source-128 7.78 0.44% -> 6.72 0.47%: 1.16x speedup
â??
xlib-rgba text_linear_rgba_source-128 7.71 0.54% -> 6.69 0.41%: 1.15x speedup
â??
xlib-rgba text_linear_rgba_source-256 29.92 0.34% -> 26.02 0.18%: 1.15x speedup
â??
xlib-rgba text_linear_rgb_source-256 29.87 0.22% -> 26.05 0.28%: 1.15x speedup
â??
xlib-rgb text_solid_rgba_over-64 4.89 0.82% -> 4.29 0.14%: 1.14x speedup
â??
xlib-rgb text_similar_rgb_over-64 4.79 0.88% -> 4.21 0.42%: 1.14x speedup
â??
xlib-rgb text_linear_rgb_over-64 5.44 1.01% -> 4.80 0.78%: 1.13x speedup
â??
xlib-rgb text_image_rgba_over-64 4.94 0.63% -> 4.37 0.85%: 1.13x speedup
â??
xlib-rgb text_image_rgb_over-64 4.92 0.38% -> 4.35 0.90%: 1.13x speedup
â??
xlib-rgb text_similar_rgba_over-64 4.80 0.56% -> 4.25 1.29%: 1.13x speedup
â??
xlib-rgb text_solid_rgb_over-64 4.87 1.33% -> 4.34 2.13%: 1.12x speedup
â??
xlib-rgb text_linear_rgba_over-64 5.38 0.44% -> 4.80 0.49%: 1.12x speedup
â??
xlib-rgb text_solid_rgba_source-64 7.65 0.54% -> 7.03 0.46%: 1.09x speedup
â??
xlib-rgb text_solid_rgb_source-64 7.64 0.33% -> 7.03 0.30%: 1.09x speedup
â??
xlib-rgb text_linear_rgba_source-64 8.26 0.46% -> 7.60 0.89%: 1.09x speedup
â??
image-rgba text_radial_rgba_over-64 7.30 0.14% -> 6.72 0.42%: 1.09x speedup
â??
image-rgb text_radial_rgb_over-64 7.32 0.55% -> 6.74 0.58%: 1.09x speedup
â??
image-rgb text_radial_rgba_over-64 7.31 0.30% -> 6.73 0.54%: 1.09x speedup
â??
xlib-rgb text_linear_rgb_source-64 8.26 0.48% -> 7.61 0.98%: 1.09x speedup
â??
xlib-rgba tessellate-64-100 41.82 0.23% -> 38.54 0.37%: 1.09x speedup
â??
xlib-rgb text_similar_rgb_source-64 7.58 0.34% -> 6.98 0.45%: 1.08x speedup
â??
xlib-rgb text_image_rgb_source-64 7.76 0.27% -> 7.16 0.65%: 1.08x speedup
â??
image-rgb tessellate-64-100 41.72 0.31% -> 38.50 0.22%: 1.08x speedup
â??
image-rgba tessellate-16-100 0.35 0.13% -> 0.32 0.14%: 1.08x speedup
â??
image-rgb tessellate-16-100 0.35 0.12% -> 0.32 0.13%: 1.08x speedup
â??
xlib-rgb tessellate-64-100 41.78 0.47% -> 38.62 0.26%: 1.08x speedup
â??
image-rgba text_radial_rgb_source-64 7.67 0.84% -> 7.10 0.66%: 1.08x speedup
â??
image-rgba text_radial_rgb_over-64 7.30 0.14% -> 6.75 0.68%: 1.08x speedup
â??
xlib-rgb text_similar_rgba_source-64 7.59 0.25% -> 7.02 0.69%: 1.08x speedup
â??
image-rgba text_radial_rgba_source-64 7.67 0.44% -> 7.10 0.55%: 1.08x speedup
â??
xlib-rgb text_image_rgba_source-64 7.76 0.29% -> 7.19 0.45%: 1.08x speedup
â??
image-rgba tessellate-64-100 41.70 0.18% -> 38.69 0.61%: 1.08x speedup
â??
xlib-rgba tessellate-16-100 0.38 0.13% -> 0.35 0.09%: 1.08x speedup
â??
xlib-rgb text_image_rgb_over-128 14.32 0.58% -> 13.32 0.33%: 1.08x speedup
â??
xlib-rgb text_similar_rgba_over-128 13.92 0.47% -> 12.95 0.45%: 1.08x speedup
â??
xlib-rgb text_solid_rgb_over-128 14.10 0.62% -> 13.12 0.33%: 1.07x speedup
â??
image-rgb text_radial_rgb_source-64 7.63 0.48% -> 7.11 0.23%: 1.07x speedup
â??
image-rgb text_radial_rgba_source-64 7.61 0.09% -> 7.10 0.40%: 1.07x speedup
â??
xlib-rgb text_similar_rgba_over-256 55.51 0.20% -> 51.85 0.26%: 1.07x speedup
â??
xlib-rgb text_similar_rgb_over-256 55.50 0.28% -> 51.86 0.14%: 1.07x speedup
â??
xlib-rgb text_solid_rgba_over-128 14.06 0.25% -> 13.14 0.45%: 1.07x speedup
â??
xlib-rgb text_linear_rgb_over-128 15.87 0.32% -> 14.87 0.22%: 1.07x speedup
â??
xlib-rgb text_linear_rgba_over-128 15.88 0.64% -> 14.88 0.18%: 1.07x speedup
â??
xlib-rgb text_solid_rgb_over-256 55.82 0.25% -> 52.34 0.12%: 1.07x speedup
â??
xlib-rgb text_image_rgba_over-128 14.24 0.20% -> 13.35 0.35%: 1.07x speedup
â??
xlib-rgb text_linear_rgba_over-256 63.40 0.27% -> 59.51 0.14%: 1.07x speedup
â??
image-rgb paint_solid_rgb_source-512 0.41 0.74% -> 0.38 0.01%: 1.06x speedup
â??
xlib-rgb tessellate-16-100 0.39 0.10% -> 0.37 1.36%: 1.06x speedup
â??
xlib-rgb text_linear_rgb_over-256 63.28 0.13% -> 59.55 0.10%: 1.06x speedup
â??
xlib-rgb text_image_rgba_over-256 57.68 0.22% -> 54.28 0.37%: 1.06x speedup
â??
image-rgb paint_solid_rgb_over-512 0.41 1.05% -> 0.38 0.95%: 1.06x speedup
xlib-rgb text_solid_rgba_over-256 55.83 0.27% -> 52.61 1.06%: 1.06x speedup
xlib-rgb text_similar_rgb_over-128 13.90 0.42% -> 13.11 0.88%: 1.06x speedup
xlib-rgb text_image_rgb_over-256 57.58 0.19% -> 54.40 0.50%: 1.06x speedup
image-rgb paint_solid_rgba_source-512 0.41 0.54% -> 0.38 0.40%: 1.06x speedup
Slowdowns
=========
image-rgb paint_similar_rgb_over-512 0.68 2.35% -> 0.85 2.47%: 1.26x slowdown
â??
image-rgb paint_similar_rgb_source-512 0.67 2.49% -> 0.84 1.53%: 1.25x slowdown
â??
xlib-rgba paint_solid_rgb_source-512 0.24 0.29% -> 0.30 0.68%: 1.25x slowdown
â??
xlib-rgba paint_solid_rgba_source-512 0.24 1.83% -> 0.30 1.12%: 1.25x slowdown
â??
image-rgb paint_image_rgb_over-512 0.68 2.61% -> 0.85 2.81%: 1.24x slowdown
â??
xlib-rgba paint_solid_rgb_over-512 0.25 2.54% -> 0.31 1.02%: 1.24x slowdown
â??
image-rgb paint_image_rgb_source-512 0.67 2.70% -> 0.83 0.77%: 1.23x slowdown
â??
image-rgba paint_solid_rgb_source-512 0.40 0.16% -> 0.43 1.08%: 1.06x slowdown
image-rgba paint_solid_rgb_over-512 0.40 1.12% -> 0.43 0.56%: 1.05x slowdown
image-rgba paint_solid_rgba_source-512 0.40 0.54% -> 0.42 0.28%: 1.05x slowdown
[Date Prev][
Date Next] [Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]