summaryrefslogtreecommitdiff
path: root/perf/cairo-perf.h
Commit message (Collapse)AuthorAgeFilesLines
* Refactor ARRAY_LENGTH macro definitions in test codeBryce Harrington2014-11-201-4/+0
|
* perf: Refactor some common macros to cairo-perf.hBryce Harrington2014-04-181-0/+12
| | | | | | | | These macros are standard in src's cairoint.h and test's cairo-test.h internal header files, so for consistency do the same thing with perf's cairo-perf.h. Reviewed-by: Uli Schlachter <psychon@znc.in>
* perf: Rudimentary histogram printing for cairo-perf-printChris Wilson2013-06-111-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If you call ./cairo-perf-print --histogram results.txt, it will then print a histogram of the results, one per test. Ideally, you should see a skewed distribution (with a negative skew representing that most results run in optimal time), but random sampling errors (scheduling, throttling, general inefficiency etc) will push it more towards a normal distribution. For example, | x | | x xx | | x xx | | x xx | | xxxx | | xxxx x | | x xxxxxx | | x xxxxxx | | xxxxxxxxx | | xxxxxxxxx | | xxxxxxxxx | | xxxxxxxxxxxx | | xxxxxxxxxxxx | | xxxxxxxxxxxx | | xxxxxxxxxxxxxx | |x xxxxxxxxxxxxxx | |x x xxxxxxxxxxxxxxx | |x x xxxxxxxxxxxxxxx | |x x xxxxxxxxxxxxxxxxx | |xxx x xxxxxxxxxxxxxxxxxxx | |xxx xxxxxxxxxxxxxxxxxxxxxxxxx | |xxxxxx xxxx x x x x xxx xx xxxxx xxx x xxx x xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx| .------------------------------------------------------------------------------. xlib firefox-fishtank 8298.44 1.53% (829/946) Starts off reasonably, but quickly deteriorates as the integrated CPU/GPU overheats and is forced to throttle. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* perf: Add an a1-pixel variantChris Wilson2011-09-151-0/+1
| | | | | | | Just to measure the overhead and differences when switching between antialiasing paths. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* perf/micro: Add the PS tiger as a measure for the antialias hintsChris Wilson2011-09-141-0/+1
| | | | Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* Introduce a new compositor architectureChris Wilson2011-09-121-2/+14
| | | | | | | | | | | | | | | | | | Having spent the last dev cycle looking at how we could specialize the compositors for various backends, we once again look for the commonalities in order to reduce the duplication. In part this is motivated by the idea that spans is a good interface for both the existent GL backend and pixman, and so they deserve a dedicated compositor. xcb/xlib target an identical rendering system and so they should be using the same compositor, and it should be possible to run that same compositor locally against pixman to generate reference tests. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> P.S. This brings massive upheaval (read breakage) I've tried delaying in order to fix as many things as possible but now this one patch does far, far, far too much. Apologies in advance for breaking your favourite backend, but trust me in that the end result will be much better. :)
* perf: Get rid of cairo_perf_ticks_per_second()Andrea Canciani2011-09-021-3/+0
| | | | | The cairo_time_from_s() and cairo_time_to_s() functions should be used instead.
* perf: Drop cairo_perf_ticks_t in favor of cairo_time_tAndrea Canciani2011-09-021-9/+7
| | | | | cairo_time_t offers a superset of the functions provided by cairo_perf_ticks_t.
* perf: Reuse cairo-timeAndrea Canciani2011-09-021-1/+2
| | | | | Instead of redefining time getters, use the generic one provided by _cairo_time_*.
* observe: Provide the sum of the elapsed time of the individual operationsChris Wilson2011-08-231-0/+1
| | | | | | | | We can use the elapsed time of the indiividual operations to profile the synchronous throughput of a trace and eliminate all replay overhead. At the cost of running the trace synchronously of course. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* perf/micro: diagonal linesChris Wilson2011-08-131-0/+1
| | | | | | The ideal benchmark for spans?... Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* perf/micro: Test wide vs hairline strokesChris Wilson2011-08-131-0/+2
| | | | Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* perf: add curveChris Wilson2011-08-091-0/+1
| | | | | | Time how long it takes to stroke and fill a single Bezier curve. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* perf: add many-curvesChris Wilson2011-08-091-0/+1
| | | | | | | Continuing the theme of stressing the tessellators, draw lots of Bezier curves! Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* perf: Add many-fillsChris Wilson2011-08-091-0/+1
| | | | | | | | A variant of many-strokes tries to answer the question of how much overhead is there in stroking, i.e. if we fill an equivalent path to a set of strokes, do we see an equivalence in performance? Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* perf: Add many-strokesChris Wilson2011-08-071-0/+1
| | | | | | | An intersection variant to exercise the stroker with many, many lines. A silly benchmark, but a popular one in the wild. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* perf: Add hash table benchmarkAndrea Canciani2011-08-031-0/+1
| | | | | | | | | | | | | A benchmark to test the speed of hash tables when inserting and removing a huge number of elements. Although originally hash tables were assumed not to get many deletions, in practice they are now being used as caches in multiple places. This means that they often have a fixed number of live elements and an element is evicted whenever a new element is inserted (this happens explicitly for cairo_cache_t objects, but also, for example, in scaled_font_map + holdovers). This access pattern is very inefficient with the current implementation.
* test,perf: Another hatching!Chris Wilson2011-07-191-0/+1
| | | | | | | This one illustrates the quadratic explosion lurking in the clipping code. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* tests,perf: Add a hatchings clip-testChris Wilson2011-07-181-0/+1
| | | | | | | A benchmark to test how close we get to reducing paint+clip to an ordinary fill, and to check correctness. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* perf/micro: Add waveChris Wilson2011-06-011-0/+1
| | | | | | | | Benjamin just demonstrated this funky trick for generating pixel outlines, and as no good deed should go unpunished, I've added his code to the perf suite. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* perf: Only print description once per backendChris Wilson2010-10-201-0/+1
| | | | | | | | Currently we print the backend description before every time, which is overly verbose. As the information doesn't^Wshouldn't change, simply print it before running the first test of each target. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
* whitespace: Fixup formal arguments and tabs in boilerplate/ and perf/.M Joonas Pihlaja2010-06-241-18/+20
| | | | | Ran a script to align the formal parameters of functions and collapse spaces to tabs in code.
* perf: Compute ops per secondChris Wilson2010-03-301-2/+7
| | | | | | Provide a hook for the test to be able to compute the number of ops per second. For instance, the glyphs test uses it to report the number of kiloglyph per second Cairo is able to render.
* [perf] Add a fast-and-sloppy mode to cairo-perf.M Joonas Pihlaja2009-09-051-0/+3
| | | | | | | | A new -f option to cairo-perf reverts to a fast run mode for quick performance overviews. The number of milliseconds each iteration of a test is run for can be overriden using the new CAIRO_PERF_ITERATION_MS environment variable. The default remains 2000 ms/iter.
* [perf] Match directory namesChris Wilson2009-08-291-1/+2
| | | | | | In order to handle 'cairo-perf-trace benchmark', we need to perform the can_run? test on the directory name as opposed to the individual trace names. Make it so.
* [perf] Calibrate tests to run for at least 2 secondsChris Wilson2009-08-061-1/+1
| | | | | | | | By ensuring that tests take longer than a couple of seconds we eliminate systematic errors in our measurements. However, we also effectively eliminate the synchronisation overhead. To compensate, we attempt to estimate the overhead by reporting the difference between a single instance and the minimum averaged instance.
* [perf] Enable trace directory recursion.Chris Wilson2009-06-301-0/+1
| | | | | | I have an idea to categorise traces within their own subdirectories and so for convenience added path walking to cairo-perf-trace. Principally this should allow for forests of symlinks of all types.
* [boilerplate] Make array of targets const.Chris Wilson2009-06-121-2/+2
| | | | Protect the boilerplate targets from unexpected modifications.
* [perf] Add a -x to exclude traces from a benchmark.Chris Wilson2009-06-111-0/+2
| | | | | | | | | | | Read names of traces to exclude from a file specified using -x on the commandline, i.e. $ ./cairo-perf-trace -x cairo-traces/tiny.exclude This is a convenient method for me to exclude certain traces for particular machines. For example tiny cannot run firefox-36-20090609.trace as that has a greater working set than the available RAM on tiny.
* [perf] Update trace summary after each iterationChris Wilson2009-06-041-0/+1
| | | | Running the macro-benchmarks takes so long, feedback is important.
* [perf] Add a verbose flag for summary output with rawChris Wilson2009-06-021-0/+3
| | | | | | Use 'cairo-perf -v -r' to have both the summary output along with the raw values. This gives a progress report whilst benchmarking, very reassuring with long running tests.
* [perf] Benchmark mixing different masks and sourcesChris Wilson2009-06-021-0/+1
|
* [perf] Add a pure glyphs performance metricChris Wilson2009-06-021-0/+1
| | | | | | | | Use the new API Behdad exposed in 1.8 to precompute a glyph string using Cairo and then benchmark cairo_show_glyphs(). This is then equivalent to the text benchmark but without the extra step of converting to glyphs on every call to cairo_show_text() i.e. it shows the underlying glyph rendering performance.
* [perf] Split can_run? into a separate precondition.Chris Wilson2009-02-131-0/+4
| | | | Allow tests to skip unnecessary setup when pruning the list of perf cases.
* [perf] Add a utility to compare backends.Chris Wilson2009-01-141-2/+7
| | | | | A minor variation on cairo-perf-diff-files that compares tests with the same name for multiple backends.
* [perf] Add perf tests to hit rectilinear code paths.M Joonas Pihlaja2008-12-061-0/+1
| | | | | | | | These tests look at the differences in code paths hit by filling paths that are rectilinear (or not) and pixel aligned (or not) with the even-odd and non-zero fill rules. The paths are not simple, so they don't hit the special case quad/triangle tessellator.
* [perf] Explicitly test rendering a path with lots of intersections.M Joonas Pihlaja2008-12-061-0/+1
| | | | | | | We don't have one just for this purpose. The only other path with many intersections that gets actually rendered is zrusin-another, but that might be sped up in the future (say by identifying collinearities up front or something like that.)
* [perf/pythagoras_tree] Another fractal.Chris Wilson2008-11-191-0/+1
| | | | Test lots of rectangles and recursion path construction.
* [perf/dragon] Add a dragon curve perf case.Chris Wilson2008-11-191-0/+1
| | | | | | Inspired by http://labs.trolltech.com/blogs/2007/08/31/rasterizing-dragons/ and http://en.wikipedia.org/wiki/Dragon_curve, add a performance test case to measure drawing this space-filling fractal curve.
* Restore the ability to choose the internal font.Chris Wilson2008-10-301-0/+1
| | | | | | | | | | | | | | Behdad wants to include the feature with 1.10, so we enable it as early as possible in 1.9 dev cycle to generate as much feedback as possible. The first change is to use "<cairo>" as being a name unlikely to clash with any real font names. This reverts commits: a824d284be23793a5c48b9ae833dcb7b2d5fff80, 292233685534aed712dfd45e8ccf498b792ce496, e0046aaf417a61da008dc6374871fa3687ba94ab, f534bd549e1e2283735d1eabb60c015a5949a735.
* Remove twin perf case.Carl Worth2008-10-291-1/+0
| | | | | | | | | This performance test relied on the recently-removed ability to select the internal twin-based font family with a name of "cairo". Presumably, we'll want to bring this performance case back when some other means of requesting that font face is added.
* Twin perf caseChris Wilson2008-10-221-0/+1
|
* [perf] A crude tool to visualise performance changes across a series.Chris Wilson2008-10-191-1/+60
| | | | | | Generate a cairo-perf-diff graph for a series of commits in order to be able to identify significant commits. Still very crude, but minimally functional.
* [perf] Add composite performance test.Björn Lindqvist2008-10-081-0/+1
| | | | | | | | Add a new test case to Cairo for checking the performance of Cairo's equivalent to GDK's gdk_pixbuf_composite_color() operation. That is an operation that happens to be extremely useful when viewing or editing transparent images so I think it is important that it is as fast as possible.
* [perf] Add rounded rectangle perf case.Chris Wilson2008-09-281-0/+1
| | | | | | | | Add the performance test case to compare the speed of filling a rounded rectangle (one with camphered corners) as opposed to an ordinary rectangle. Since the majority of the pixels are identical, ideally the two cases would take similar times (modulo the additional overhead in the more complex path).
* [cairo-perf] Only allocate arrays once.Chris Wilson2008-06-131-0/+3
| | | | | Store the array of times on the cairo_perf_t context to avoid reallocating it for every perf-case.
* Some fixes and improvements to the Win32 buildAzar@.(none)2008-02-061-1/+1
|
* [perf] Add pixman_region_init_rects and use in extract_regionVladimir Vukicevic2007-06-181-0/+1
| | | | | Avoid O(N*N) loop in traps_extract_region by letting us hand pixman an array of rects all at once.
* perf: Add new paint-with-alpha testCarl Worth2007-04-251-0/+1
| | | | | | MacSlow noticed that cairo_paint_with_alpha is much slower than it should be, (and jrmuizel has a nice plan for fixing the performance bug).
* Add "rectangles" perf testDan Amelang2007-01-311-0/+1
| | | | | This test draws many small, solid pixel-aligned rectangles one at a time.