Commit graph

127 commits

Author SHA1 Message Date
Chris Wilson
d64ef35521 Include cairo-perf in make check
Although cairo-perf is not written to perform explicit failure testing of
cairo, it does generate long sequences of cairo operations which often
trigger unexpected errors. By including it with make check, it becomes
even easier for the programmer to check that one has not broken cairo in
terms of expected behaviour or performance.
2007-04-19 23:12:09 +01:00
Chris Wilson
6d01e89988 Add callgrind output files to CLEANFILES and .gitignore. 2007-04-19 21:46:00 +01:00
Chris Wilson
2c79f8b75b Fix command line for running cairo-perf under valgrind.
The CAIRO_PERF_ENVIRONMENT slipped into the middle of the command line
instead of at the start.
2007-04-19 21:42:13 +01:00
Behdad Esfahbod
157074c794 [boilerplate] Add cairo_boilerplate_get/free_targets
This means, test and perf suites now share the same target handling
code, including parsing CAIRO_TEST_TARGET.
2007-04-18 19:46:30 -04:00
Behdad Esfahbod
b9026d0b13 [perf] Make targets more consistent with the test suite
That is:
1) no VALGRING vs VG abbreviations
2) setting TARGETS and ITERS on the make command line works now
2007-04-18 19:09:53 -04:00
Chris Wilson
a396e0b057 cairo-perf - add the missing newline.
Oops, missed out the newline for the fprintf in the previous commit.
2007-04-18 14:24:10 +01:00
Chris Wilson
383e9d5368 cairo-perf - Check that the surface is created.
Exit(1) if we fail to create the target surface.
2007-04-18 14:13:42 +01:00
Mathias Hasselmann
f7a2787685 Merge branch 'master' of git+ssh://hasselmm@git.freedesktop.org/git/cairo 2007-04-16 23:05:10 +02:00
Chris Wilson
3a3fb0031d Update .gitignore
Add .*.sw? (vim swapfiles).
Add *~ (backup files).
Add *.gcno and *.gcda (gcov intermediates).
2007-04-16 15:08:54 +01:00
Carl Worth
ef3e13337e cairo-perf-diff: Use median not minimum to report differences
Ideally, the minimum value would indicate the best possible performance,
but I've encountered situations where a bogus minimum value gets lodged
into the cached results for some reason, (and yet doesn't also get
discarded as an outlier). The downside of that situation is that running
more iterations never changes the result, so it's hard to fix the problem,
(resulting in cairo-perf-diff feeling just plain broken as more runs
change nothing).

So let's try using the median time instead.
2007-04-13 13:36:49 -07:00
Carl Worth
ec639449de Fix typo in loop control for computation of std. deviation
Thanks to Chris Wilson for pointing out this problem.
2007-04-12 18:16:52 -07:00
Chris Wilson
1237eedff3 Check for error whilst trying to advance along a text string.
The text perf-case tries to fill the region with a single text string,
but fails to detect when the current point does not advance due to an
error. This causes the perf-case to enter an infinite loop, so we break
out when the cairo_status() has been set.
2007-04-09 16:13:16 -07:00
Behdad Esfahbod
e8072e6e0a [test,perf] Make them rebuild boilerplate when src is changed 2007-04-08 22:03:46 -04:00
Mathias Hasselmann
abac4d251d [cairo-perf] Use full 64 bit of the clock cycle counters to avoid overflows 2007-03-24 00:22:37 +01:00
Mathias Hasselmann
dd4601b0d0 [cairo-perf] Emit warning, if cairo-perf is not CPU bound
cairo-perf and the X server should be bound to CPUs (either the same
	or separate) on SMP systems. Not doing so causes random results when
	the X server is moved to or from cairo-perf's CPU during the
	benchmarks.
2007-03-16 20:43:29 +01:00
Mathias Hasselmann
562bd551bc [cairo-perf-diff] Update usage screen to mention --html. 2007-03-15 12:47:41 +01:00
Mathias Hasselmann
e878f2259b Include pixman/src in cairo-perf hash 2007-03-14 21:47:39 +01:00
Mathias Hasselmann
1a3f5df5ff Add index.html to .gitignore 2007-03-14 21:42:50 +01:00
Mathias Hasselmann
c40be43aef Transform the output of cairo-perf-diff into HTML 2007-03-14 21:41:40 +01:00
Mathias Hasselmann
f1dd48475a Improve CPU utilization when building cairo-perf 2007-03-14 21:18:09 +01:00
Carl Worth
0f78eb8ccf perf/README: Add notes on using cairo-perf-diff 2007-03-12 16:24:58 -07:00
Chris Wilson
92d331a234 Fix up the trivial leaks found by valgrind. 2007-03-07 09:25:12 -08:00
Chris Wilson
7d972086d6 Add valgrind/callgrind targets to Makefile. 2007-03-07 09:24:53 -08:00
Jeff Muizelaar
5f386bb15a Use a closed interval when eliminating outliers from performance measurements
When choosing the samples that are not outliers we use a half-open interval
(outlier_min <= x < outlier_max). This causes all of the samples to be
discarded when the interquartile range is 0 because none of them are less
than outlier_max. Fix the problem and make the test more consistent by
using a closed interval (outliner_min <= x <= outlier_max).
2007-03-02 03:12:36 -08:00
Vladimir Vukicevic
be451cd83d [quartz] rename NQUARTZ -> QUARTZ in defines 2007-02-20 12:54:03 -08:00
Dan Amelang
382e021ccb Add "rectangles" perf test
This test draws many small, solid pixel-aligned rectangles one at a
time.
2007-01-31 11:53:06 -08:00
Kalle Vahlman
2f6d184e66 Add --use-ms option to cairo-perf-diff-files
This allows for comparing perf files generation on different hardware
platforms, (since the ticks can be very different on different hardware).
2007-01-19 16:47:31 -08:00
M Joonas Pihlaja
8354906381 Make UTF-8 output from cairo-perf-diff-files optional
This patch adds options to disable the UTF-8 change bars and replace
them with ASCII '*' gfx. The motivation is that UTF-8 really does some
damage to some terminals, and some always forget to pipe stuff through
a pager to make it safe. The new options for cairo-perf-diff-files are:

	--no-utf
	--no-bars
2007-01-19 16:47:31 -08:00
Carl Worth
d5531c4f50 Add unaligned_clip perf case courtesy of Jeff Muizelaar
Conflicts:

	perf/Makefile.am
	perf/cairo-perf.c
	perf/cairo-perf.h
2007-01-09 14:31:22 -08:00
Brian Ewins
22e271d687 [perf/cairo-perf-diff] Pass CAIRO_AUTOGEN_OPTIONS to autogen.
Makes it was possible to run cairo-perf-diff with different
configurations, eg with quartz enabled.
2007-01-07 18:12:40 +00:00
Carl Worth
cc11c264ec Add long-lines perf case
This shows some very bad slowness for lines that are mostly
offscreen (like 100x slower than just drawing the visible
portion).
2007-01-05 16:50:11 -08:00
M Joonas Pihlaja
4c95e2b7bf New performance test case "mosaic" for splines. 2006-12-16 21:32:19 +02:00
M Joonas Pihlaja
4057a98f88 cairo-perf-diff-files: Don't segfault reading cooked perf reports.
Fixes cairo-perf-diff-files for non-raw cairo-perf reports.  Similar
to the patch on the mailing list, only applied to the caller of
_cairo_stats_compute():

http://lists.freedesktop.org/archives/cairo/2006-December/008720.html
2006-12-05 06:02:45 +02:00
Dan Amelang
3dbe468fd6 [perf] Provide watered-down implementations of getline and strndup for
building on non-GNU toolchains.
2006-12-01 14:12:16 -08:00
Behdad Esfahbod
72a4a98346 [test|perf|boilerplate/Makefile.am] Add -I$(top_builddir)/src to INCLUDES
needed to find cairo-features.h when building out of tree.
2006-11-27 13:23:13 -05:00
Carl Worth
1ed3811338 perf: Add box_outline test case.
This test shows that drawing a 100x100 single-pixel wide box outline is
currently 5 to 16 times slower when using the natural cairo_stroke() as
compared to a rather awkward cairo_fill() of two rectangles.

[ # ]  backend-content                    test-size min(ticks)  min(ms) median(ms) stddev. iterations
[  0]    image-rgba         box-outline-stroke-100     301321    0.218    0.219  0.39%   5
[  1]    image-rgba           box-outline-fill-100      18178    0.013    0.013  0.43%   5
[  0]     xlib-rgba         box-outline-stroke-100     379177    0.275    0.276  1.39%   6
[  1]     xlib-rgba           box-outline-fill-100      83355    0.060    0.060  0.17%   5
2006-11-17 18:00:36 -08:00
Carl Worth
a8faa0aef1 cairo-perf: When iteration count is given on command-line, never execute fewer 2006-11-17 17:48:39 -08:00
Carl Worth
0f7381b26e cairo-perf-diff: Run git-ls-tree from the correct directory
Before this change, cairo-perf-diff would work correctly only
if run from the top-level directory, (and if run from any other
directory it would not pull in the latest boilerplate and perf
files).
2006-11-14 15:13:58 -08:00
Carl Worth
74f5fe241e cairo-perf-diff: rsync only git-managed files from boilerplate/perf
Previously, we were using rsync to recursively copy all files
from boilerplate and perf when doing the performance tests. This
had the fatal flaw that pre-built binaries would be hard coded to
link against the cairo library from $CAIRO_DIR with an absolute
path, (due to libtool rpath stuff).

By only copying git-managed files, we only get source and the compiled
binaries (or libtool wrappers) will now be hard-coded to link against
the library under test.
2006-11-13 14:44:07 -08:00
Carl Worth
26b74049e7 cairo-perf-diff: Use rsync instead of cp to avoid some unnecessary rebuilding 2006-11-10 11:26:01 -08:00
Carl Worth
f1f189b81a cairo-perf-diff: Separate old and new build directories
With the fancy new, incremental cairo-perf-diff we don't want to keep
resetting the same working tree back and forth between the old and new
versions and rebuilding everything all over again. So use two different
build directories instead of one.

This fixes the rebuild of the library itself, but the perf stuff is still
being rebuilt, (since it's being re-copied each time).
2006-11-10 10:34:37 -08:00
Carl Worth
d9b697c46c cairo-perf-diff: Allow incremental refinement of performance results
cairo-perf-diff now accepts a -f command-line option to force it to
re-generate performance results even if something exists in the cache
already. It also now uses raw mode and appends to the cached file
rather than rewriting the results.

Finally, it also now allows a -- option on the command line and passes
all the subsequent command-line options to cairo-perf. This is handy for
limiting cairo-perf to run only on a subset of the tests of interest.
2006-11-10 10:34:35 -08:00
Carl Worth
439bf81e56 Fix broken size calculation for xrealloc
Another one of those "untested code == broken code" situations.
2006-11-10 10:00:31 -08:00
Carl Worth
f6b400a292 perf: Add world-map performance test case.
The map for this test case was originally demonstrated as a
performance problem in this mozilla bug report:

	A very slow SVG file with <path>s
	https://bugzilla.mozilla.org/show_bug.cgi?id=332413

I obtained permission from the creator of the original file to
include the data here, (see comments in world-map.h for details).
2006-11-08 06:07:01 -08:00
Carl Worth
2d927eaefa perf/Makefile.am: Add missing zrusin-another.h file to list 2006-11-08 06:07:01 -08:00
Carl Worth
0d1340f716 perf: Eliminate CAIRO_STATS_MIN_VALID_SAMPLES
We don't need this at this deep level since callers can now
implement this limiting manually since stats.iterations is
now returned. Also, this was interfering with the -i option
to cairo-perf anyway.
2006-11-08 06:07:01 -08:00
Carl Worth
6d5df0e3e2 cairo-perf-diff-files: Add support for diffing "raw" files from "cairo-perf -r" 2006-11-08 06:07:01 -08:00
Carl Worth
d1e1192090 cairo-perf: Print ticks_per_ms value in raw mode so raw analysis tools can report times 2006-11-08 06:07:01 -08:00
Carl Worth
5393989272 perf: Move statistics code into new cairo-stats.h for sharing 2006-11-08 06:07:01 -08:00
Carl Worth
0564b5074c cairo-perf: Add command line options for test cases to run, listing tests, and new raw mode. 2006-11-07 01:29:38 -08:00