gtk/tests/blur-performance.c
Alexander Larsson 9ba185b749 Add performance test for gtkcairoblur
This just creates a large cairo surface and times bluring it
at various values of radius.

https://bugzilla.gnome.org/show_bug.cgi?id=746468
2015-03-21 20:59:57 +01:00

55 lines
1.1 KiB
C

/* -*- mode: C; c-basic-offset: 2; indent-tabs-mode: nil; -*- */
#include <gtk/gtkcairoblurprivate.h>
static void
init_surface (cairo_t *cr)
{
int w = cairo_image_surface_get_width (cairo_get_target (cr));
int h = cairo_image_surface_get_height (cairo_get_target (cr));
cairo_set_source_rgb (cr, 0, 0, 0);
cairo_fill (cr);
cairo_set_source_rgb (cr, 1, 1, 1);
cairo_arc (cr, w/2, h/2, w/2, 0, 2*G_PI);
cairo_fill (cr);
}
int
main (int argc, char **argv)
{
cairo_surface_t *surface;
cairo_t *cr;
GTimer *timer;
double msec;
int i, j;
int size;
timer = g_timer_new ();
size = 2000;
surface = cairo_image_surface_create (CAIRO_FORMAT_A8, size, size);
cr = cairo_create (surface);
/* We do everything three times, first two as warmup */
for (j = 0; j < 2; j++)
{
for (i = 1; i < 16; i++)
{
init_surface (cr);
g_timer_start (timer);
_gtk_cairo_blur_surface (surface, i);
msec = g_timer_elapsed (timer, NULL) * 1000;
if (j == 1)
g_print ("Radius %2d: %.2f msec, %.2f kpixels/msec:\n", i, msec, size*size/(msec*1000));
}
}
g_timer_destroy (timer);
return 0;
}