[cairo-commit] 2 commits - benchmark/firefox-talos-gfx.lzma benchmark/firefox-talos-svg.lzma csi-trace.c epiphany-20090810.lzma epiphany-webkit-20090810.lzma evolution-20090607.lzma evolution-20090618.lzma firefox-20090601.lzma firefox-36-20090609.lzma firefox-36-20090611.lzma firefox-periodic-table.lzma firefox-talos-gfx-20090702.lzma firefox-talos-svg-20090702.lzma firefox-world-map.lzma full/epiphany-20090810.lzma full/epiphany-webkit-20090810.lzma full/evolution-20090607.lzma full/evolution-20090618.lzma full/firefox-20090601.lzma full/firefox-36-20090609.lzma full/firefox-36-20090611.lzma full/firefox-periodic-table.lzma full/firefox-talos-gfx-20090702.lzma full/firefox-talos-svg-20090702.lzma full/firefox-world-map.lzma full/gnome-system-monitor-20090821.lzma full/gnome-terminal-20090601.lzma full/gnome-terminal-20090728.lzma full/poppler-20090811.lzma full/poppler-bug-12266.lzma full/swfdec-fill-rate-2xaa.lzma full/swfdec-fill-rate-4xaa.lzma full/swfdec-fill-rate.lzma full/swfdec-giant-steps.lzma full/swfdec-youtube.lzma .gitignore gnome-system-monitor-20090821.lzma gnome-terminal-20090601.lzma gnome-terminal-20090728.lzma Makefile poppler-20090811.lzma poppler-bug-12266.lzma README swfdec-fill-rate-2xaa.lzma swfdec-fill-rate-4xaa.lzma swfdec-fill-rate.lzma swfdec-giant-steps.lzma swfdec-youtube.lzma

Chris Wilson ickle at kemper.freedesktop.org
Sat Aug 22 05:36:26 PDT 2009


 .gitignore                              |    2 
 Makefile                                |   14 +++--
 README                                  |   26 +++++++++-
 benchmark/firefox-talos-gfx.lzma        |binary
 benchmark/firefox-talos-svg.lzma        |binary
 csi-trace.c                             |   80 ++++++++++++++++++++++++++++++++
 dev/null                                |binary
 full/epiphany-20090810.lzma             |binary
 full/epiphany-webkit-20090810.lzma      |binary
 full/evolution-20090607.lzma            |binary
 full/evolution-20090618.lzma            |binary
 full/firefox-20090601.lzma              |binary
 full/firefox-36-20090609.lzma           |binary
 full/firefox-36-20090611.lzma           |binary
 full/firefox-periodic-table.lzma        |binary
 full/firefox-talos-gfx-20090702.lzma    |binary
 full/firefox-talos-svg-20090702.lzma    |binary
 full/firefox-world-map.lzma             |binary
 full/gnome-system-monitor-20090821.lzma |binary
 full/gnome-terminal-20090601.lzma       |binary
 full/gnome-terminal-20090728.lzma       |binary
 full/poppler-20090811.lzma              |binary
 full/poppler-bug-12266.lzma             |binary
 full/swfdec-fill-rate-2xaa.lzma         |binary
 full/swfdec-fill-rate-4xaa.lzma         |binary
 full/swfdec-fill-rate.lzma              |binary
 full/swfdec-giant-steps.lzma            |binary
 full/swfdec-youtube.lzma                |binary
 28 files changed, 114 insertions(+), 8 deletions(-)

New commits:
commit fc3e5c855fcd4b76cf6125c6280a785f93ed5e0b
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Sat Aug 22 13:31:36 2009 +0100

    Add firefox-talos benchmarks
    
    These are the untrimmed traces from the synthetic talos firefox tests, as
    these provide wide coverage of firefox.

diff --git a/README b/README
index 537daec..b368c45 100644
--- a/README
+++ b/README
@@ -100,3 +100,8 @@ useful for the casual user. The full traces are kept as they will exercise
 corner cases much more thoroughly and are not compromised by the conversion.
 
 To run the benchmark subset, use cairo-perf-trace benchmark.
+
+firefox-talos-gfx - The synthetic firefox benchmark (identical to
+                    firefox-talos-gfx-20090702) that exercise the core renderer.
+firefox-talos-svg - The synthetic firefox benchmark (identical to
+                    firefox-talos-svg-20090702) that exercise the SVG renderer.
diff --git a/benchmark/firefox-talos-gfx.lzma b/benchmark/firefox-talos-gfx.lzma
new file mode 100644
index 0000000..2756283
Binary files /dev/null and b/benchmark/firefox-talos-gfx.lzma differ
diff --git a/benchmark/firefox-talos-svg.lzma b/benchmark/firefox-talos-svg.lzma
new file mode 100644
index 0000000..b01e6eb
Binary files /dev/null and b/benchmark/firefox-talos-svg.lzma differ
commit c4c9a9e58aa2c8f94396cc07d23eb6570fd4cd85
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Sat Aug 22 13:24:30 2009 +0100

    Reorganise repository in preparation of adding 'benchmarks'
    
    More the currents trace to a full/ directory and introduce an empty
    benchmark/ directory. I plan to add selected short traces to the
    benchmark/ directory that will be useful for the casual benchmarker (or
    for quick runs over large number of revisions). In addition to the
    reorganisation, I've added a csi-trace utility that has the ability to
    trim a trace after a certain period of time has elapsed (since it has to
    draw the trace to an image surface in order to satisfy some internal
    requirements, this is a reasonable method of trimming replay times).
    
    Note csi-trace probably requires some patches currently in wip queues,
    but that should not affect normal operations.

diff --git a/.gitignore b/.gitignore
index eee4072..aae1de1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,3 @@
 *.trace
 csi-bind
-
+csi-trace
diff --git a/Makefile b/Makefile
index af411d6..90142fc 100644
--- a/Makefile
+++ b/Makefile
@@ -1,13 +1,17 @@
 NULL :=
-LZMA := $(wildcard *.lzma)
-TRACES := $(LZMA:.lzma=.trace)
+FULL_LZMA := $(wildcard full/*.lzma)
+QUICK_LZMA := $(wildcard benchmark/*.lzma)
+ALL_LZMA:= $(FULL_LZMA) $(QUICK_LZMA)
+ALL_TRACES := $(ALL_LZMA:.lzma=.trace)
 
-all: $(TRACES)
+all: $(ALL_TRACES)
 clean:
-	rm -f $(TRACES) csi-bind
+	rm -f $(ALL_TRACES) csi-bind csi-trace
 
 %.trace: %.lzma csi-bind
 	lzma -cd $< | ./csi-bind > $@
 
 csi-bind: csi-bind.c
-	$(CC) $^ $(shell pkg-config cairo --cflags --libs) -lcairo-script-interpreter -o $@
+	$(CC) $(CFLAGS) $(shell pkg-config cairo --cflags) $^ -lcairo-script-interpreter $(pkg-config cairo --libs) -o $@
+csi-trace: csi-trace.c
+	$(CC) $(CFLAGS) $(shell pkg-config cairo --cflags) $^ -lcairo-script-interpreter $(shell pkg-config cairo --libs) -o $@
diff --git a/README b/README
index 5be2542..537daec 100644
--- a/README
+++ b/README
@@ -36,8 +36,13 @@ the run. However, I'm loathe to exclude tests simply because they take too
 long or can not be run on tiny machines. (Instead, I plan to create subset
 of tests that have been truncated to run within 60s on a 2GHz Intel Core2.)
 
-Traces
-------
+4. If the application significantly improves such that the current trace
+is no longer representative of that application, it must be replaced. This
+is to ensure that we do not try to optimise for "historically broken
+behaviour".
+
+Traces (found in the full/ directory)
+-------------------------------------
 firefox-20090601    - browsing various news site, in particular the
                       international BBC News website.
 firefox-36-20090609 - browsing news sites and blogs at font size 36
@@ -83,3 +88,15 @@ epiphany-webkit-20090810 - Running epiphany using the webkit backend over a
 gnome-system-monitor-20090821 - A clean cairo version of gnome-system-monitor,
                                 graphing CPU/memory/network activity whilst
                                 reading the news with epiphany.
+
+
+Benchmarks
+----------
+The benchmarks are a set of trimmed traces that should run in a reasonable
+timeframe (I'm aiming for <10 seconds on a 2GHz Core2 with cairo-image, using
+./csi-trace --trim=10). The idea here is that this allows us to quickly
+determine a representative metric without running the whole suite -- and is
+useful for the casual user. The full traces are kept as they will exercise
+corner cases much more thoroughly and are not compromised by the conversion.
+
+To run the benchmark subset, use cairo-perf-trace benchmark.
diff --git a/csi-trace.c b/csi-trace.c
new file mode 100644
index 0000000..f3474bf
--- /dev/null
+++ b/csi-trace.c
@@ -0,0 +1,80 @@
+#include <cairo-script.h>
+#include <cairo-script-interpreter.h>
+
+#include <stdio.h>
+#include <math.h>
+#include <setjmp.h>
+#include <time.h>
+
+static jmp_buf jmp;
+static time_t timeout;
+
+static cairo_format_t
+format_from_content (cairo_content_t content)
+{
+    switch (content) {
+    case CAIRO_CONTENT_ALPHA: return CAIRO_FORMAT_A8;
+    case CAIRO_CONTENT_COLOR: return CAIRO_FORMAT_RGB24;
+    default:
+    case CAIRO_CONTENT_COLOR_ALPHA: return CAIRO_FORMAT_ARGB32;
+    }
+}
+
+static cairo_surface_t *
+_script_surface_create (void *closure,
+			 cairo_content_t content,
+			 double width, double height)
+{
+    cairo_surface_t *surface, *image;
+    cairo_rectangle_t extents;
+
+    if (timeout && time (NULL) > timeout)
+	longjmp (jmp, 1);
+
+    /* use a image target so that we can use this surface as a source */
+    image = cairo_image_surface_create (format_from_content (content),
+					ceil (width), ceil (height));
+    surface = cairo_script_surface_create_for_target (closure, image);
+    cairo_surface_destroy (image);
+
+    return surface;
+}
+
+static cairo_status_t
+write (void *closure, const unsigned char *data, unsigned int length)
+{
+    if (fwrite (data, length, 1, closure) != 1)
+	return CAIRO_STATUS_WRITE_ERROR;
+
+    return CAIRO_STATUS_SUCCESS;
+}
+
+int
+main (int argc, char **argv)
+{
+    const cairo_script_interpreter_hooks_t hooks = {
+	.closure = cairo_script_context_create_for_stream (write, stdout),
+	.surface_create = _script_surface_create,
+    };
+    cairo_script_interpreter_t *csi;
+    int i;
+
+    for (i = 1; i < argc; i++) {
+	if (strcmp (argv[i], "--trim") == 0) {
+	    timeout = atoi (argv[i+1]);
+	    i++;
+	} else if (strncmp (argv[i], "--trim=", 7) == 0) {
+	    timeout = atoi (argv[i] + 7);
+	}
+    }
+
+    if (timeout)
+	timeout += time (NULL);
+
+    csi = cairo_script_interpreter_create ();
+    cairo_script_interpreter_install_hooks (csi, &hooks);
+    if (setjmp (jmp) == 0)
+	cairo_script_interpreter_feed_stream (csi, stdin);
+    cairo_script_context_destroy (hooks.closure);
+    return cairo_script_interpreter_destroy (csi);
+}
diff --git a/epiphany-20090810.lzma b/epiphany-20090810.lzma
deleted file mode 100644
index 289c996..0000000
Binary files a/epiphany-20090810.lzma and /dev/null differ
diff --git a/epiphany-webkit-20090810.lzma b/epiphany-webkit-20090810.lzma
deleted file mode 100644
index 4706794..0000000
Binary files a/epiphany-webkit-20090810.lzma and /dev/null differ
diff --git a/evolution-20090607.lzma b/evolution-20090607.lzma
deleted file mode 100644
index 065bc74..0000000
Binary files a/evolution-20090607.lzma and /dev/null differ
diff --git a/evolution-20090618.lzma b/evolution-20090618.lzma
deleted file mode 100644
index 90cc03b..0000000
Binary files a/evolution-20090618.lzma and /dev/null differ
diff --git a/firefox-20090601.lzma b/firefox-20090601.lzma
deleted file mode 100644
index af1eaa4..0000000
Binary files a/firefox-20090601.lzma and /dev/null differ
diff --git a/firefox-36-20090609.lzma b/firefox-36-20090609.lzma
deleted file mode 100644
index 19b9320..0000000
Binary files a/firefox-36-20090609.lzma and /dev/null differ
diff --git a/firefox-36-20090611.lzma b/firefox-36-20090611.lzma
deleted file mode 100644
index e1f2880..0000000
Binary files a/firefox-36-20090611.lzma and /dev/null differ
diff --git a/firefox-periodic-table.lzma b/firefox-periodic-table.lzma
deleted file mode 100644
index b147f27..0000000
Binary files a/firefox-periodic-table.lzma and /dev/null differ
diff --git a/firefox-talos-gfx-20090702.lzma b/firefox-talos-gfx-20090702.lzma
deleted file mode 100644
index 2756283..0000000
Binary files a/firefox-talos-gfx-20090702.lzma and /dev/null differ
diff --git a/firefox-talos-svg-20090702.lzma b/firefox-talos-svg-20090702.lzma
deleted file mode 100644
index b01e6eb..0000000
Binary files a/firefox-talos-svg-20090702.lzma and /dev/null differ
diff --git a/firefox-world-map.lzma b/firefox-world-map.lzma
deleted file mode 100644
index 83ef01a..0000000
Binary files a/firefox-world-map.lzma and /dev/null differ
diff --git a/full/epiphany-20090810.lzma b/full/epiphany-20090810.lzma
new file mode 100644
index 0000000..289c996
Binary files /dev/null and b/full/epiphany-20090810.lzma differ
diff --git a/full/epiphany-webkit-20090810.lzma b/full/epiphany-webkit-20090810.lzma
new file mode 100644
index 0000000..4706794
Binary files /dev/null and b/full/epiphany-webkit-20090810.lzma differ
diff --git a/full/evolution-20090607.lzma b/full/evolution-20090607.lzma
new file mode 100644
index 0000000..065bc74
Binary files /dev/null and b/full/evolution-20090607.lzma differ
diff --git a/full/evolution-20090618.lzma b/full/evolution-20090618.lzma
new file mode 100644
index 0000000..90cc03b
Binary files /dev/null and b/full/evolution-20090618.lzma differ
diff --git a/full/firefox-20090601.lzma b/full/firefox-20090601.lzma
new file mode 100644
index 0000000..af1eaa4
Binary files /dev/null and b/full/firefox-20090601.lzma differ
diff --git a/full/firefox-36-20090609.lzma b/full/firefox-36-20090609.lzma
new file mode 100644
index 0000000..19b9320
Binary files /dev/null and b/full/firefox-36-20090609.lzma differ
diff --git a/full/firefox-36-20090611.lzma b/full/firefox-36-20090611.lzma
new file mode 100644
index 0000000..e1f2880
Binary files /dev/null and b/full/firefox-36-20090611.lzma differ
diff --git a/full/firefox-periodic-table.lzma b/full/firefox-periodic-table.lzma
new file mode 100644
index 0000000..b147f27
Binary files /dev/null and b/full/firefox-periodic-table.lzma differ
diff --git a/full/firefox-talos-gfx-20090702.lzma b/full/firefox-talos-gfx-20090702.lzma
new file mode 100644
index 0000000..2756283
Binary files /dev/null and b/full/firefox-talos-gfx-20090702.lzma differ
diff --git a/full/firefox-talos-svg-20090702.lzma b/full/firefox-talos-svg-20090702.lzma
new file mode 100644
index 0000000..b01e6eb
Binary files /dev/null and b/full/firefox-talos-svg-20090702.lzma differ
diff --git a/full/firefox-world-map.lzma b/full/firefox-world-map.lzma
new file mode 100644
index 0000000..83ef01a
Binary files /dev/null and b/full/firefox-world-map.lzma differ
diff --git a/full/gnome-system-monitor-20090821.lzma b/full/gnome-system-monitor-20090821.lzma
new file mode 100644
index 0000000..c5060ea
Binary files /dev/null and b/full/gnome-system-monitor-20090821.lzma differ
diff --git a/full/gnome-terminal-20090601.lzma b/full/gnome-terminal-20090601.lzma
new file mode 100644
index 0000000..a124be5
Binary files /dev/null and b/full/gnome-terminal-20090601.lzma differ
diff --git a/full/gnome-terminal-20090728.lzma b/full/gnome-terminal-20090728.lzma
new file mode 100644
index 0000000..1a5a8bb
Binary files /dev/null and b/full/gnome-terminal-20090728.lzma differ
diff --git a/full/poppler-20090811.lzma b/full/poppler-20090811.lzma
new file mode 100644
index 0000000..690cb56
Binary files /dev/null and b/full/poppler-20090811.lzma differ
diff --git a/full/poppler-bug-12266.lzma b/full/poppler-bug-12266.lzma
new file mode 100644
index 0000000..d3d1f67
Binary files /dev/null and b/full/poppler-bug-12266.lzma differ
diff --git a/full/swfdec-fill-rate-2xaa.lzma b/full/swfdec-fill-rate-2xaa.lzma
new file mode 100644
index 0000000..5ba5d73
Binary files /dev/null and b/full/swfdec-fill-rate-2xaa.lzma differ
diff --git a/full/swfdec-fill-rate-4xaa.lzma b/full/swfdec-fill-rate-4xaa.lzma
new file mode 100644
index 0000000..daa14e1
Binary files /dev/null and b/full/swfdec-fill-rate-4xaa.lzma differ
diff --git a/full/swfdec-fill-rate.lzma b/full/swfdec-fill-rate.lzma
new file mode 100644
index 0000000..df78e48
Binary files /dev/null and b/full/swfdec-fill-rate.lzma differ
diff --git a/full/swfdec-giant-steps.lzma b/full/swfdec-giant-steps.lzma
new file mode 100644
index 0000000..eff1b04
Binary files /dev/null and b/full/swfdec-giant-steps.lzma differ
diff --git a/full/swfdec-youtube.lzma b/full/swfdec-youtube.lzma
new file mode 100644
index 0000000..aad0201
Binary files /dev/null and b/full/swfdec-youtube.lzma differ
diff --git a/gnome-system-monitor-20090821.lzma b/gnome-system-monitor-20090821.lzma
deleted file mode 100644
index c5060ea..0000000
Binary files a/gnome-system-monitor-20090821.lzma and /dev/null differ
diff --git a/gnome-terminal-20090601.lzma b/gnome-terminal-20090601.lzma
deleted file mode 100644
index a124be5..0000000
Binary files a/gnome-terminal-20090601.lzma and /dev/null differ
diff --git a/gnome-terminal-20090728.lzma b/gnome-terminal-20090728.lzma
deleted file mode 100644
index 1a5a8bb..0000000
Binary files a/gnome-terminal-20090728.lzma and /dev/null differ
diff --git a/poppler-20090811.lzma b/poppler-20090811.lzma
deleted file mode 100644
index 690cb56..0000000
Binary files a/poppler-20090811.lzma and /dev/null differ
diff --git a/poppler-bug-12266.lzma b/poppler-bug-12266.lzma
deleted file mode 100644
index d3d1f67..0000000
Binary files a/poppler-bug-12266.lzma and /dev/null differ
diff --git a/swfdec-fill-rate-2xaa.lzma b/swfdec-fill-rate-2xaa.lzma
deleted file mode 100644
index 5ba5d73..0000000
Binary files a/swfdec-fill-rate-2xaa.lzma and /dev/null differ
diff --git a/swfdec-fill-rate-4xaa.lzma b/swfdec-fill-rate-4xaa.lzma
deleted file mode 100644
index daa14e1..0000000
Binary files a/swfdec-fill-rate-4xaa.lzma and /dev/null differ
diff --git a/swfdec-fill-rate.lzma b/swfdec-fill-rate.lzma
deleted file mode 100644
index df78e48..0000000
Binary files a/swfdec-fill-rate.lzma and /dev/null differ
diff --git a/swfdec-giant-steps.lzma b/swfdec-giant-steps.lzma
deleted file mode 100644
index eff1b04..0000000
Binary files a/swfdec-giant-steps.lzma and /dev/null differ
diff --git a/swfdec-youtube.lzma b/swfdec-youtube.lzma
deleted file mode 100644
index aad0201..0000000
Binary files a/swfdec-youtube.lzma and /dev/null differ


More information about the cairo-commit mailing list