[cairo] Performance stress-case (librsvg)
daniel.amelang at gmail.com
Mon Dec 4 00:42:19 PST 2006
On 12/3/06, Behdad Esfahbod <behdad at behdad.org> wrote:
> On Sun, 2006-12-03 at 18:47 -0500, Daniel Amelang wrote:
> > On 12/3/06, Kalle Vahlman <kalle.vahlman at gmail.com> wrote:
> > > In any case, the svg should be a nice test case for performance, given
> > > that it is obviously not a trivial one to render.
> > This got me thinking...one of the most valuable tools I can think of
> > for helping the performance effort would be something that, for a
> > given run, captured all external cairo calls (LD_PRELOAD style) _with_
> > the data passed in to the functions, and packaged all that up somehow
> > in a single (really big) tar file or something. Then, we have a
> > 'replayer' that our perf tests could use to replay the sequence of
> > calls with that captured data contained in the tar file. I think it
> > would be really hard to create one that did all that automatically, as
> > you have to know in what cases you want to copy data that a pointer
> > points to (think create_for_data) and all that. And yes, the data
> > would need to be stored in a architecture-independent format if you
> > want to use it as a general perf test. But, at least we would only
> > have to do it for the functions in cairo.h (haha, I said _only_), and
> > maybe we can just start with the common ones and go from there.
> This has been already discussed here:
I knew it sounded familiar :) But I had understood that the goal here
was just to get simple values like enumerations, pointer addresses,
etc. Not nearly enough to actually automatically replay a run, right?.
For example, to replay a call to cairo_show_glyphs you'll need to
capture everything in the glyphs array, not just the pointer address
(obviously). That's the real difference I see in what I was proposing
vs. what had been discussed before.
Doesn't mean you can't grow that capability out of the current
efforts. It's just a really big step.
> I'm working on generating the wrappers as an extra .so file inside cairo
> tree itself.
Very cool. Looking forward to it.
More information about the cairo