[cairo] cairo_set_dash performance
vladimir at pobox.com
Thu Feb 5 16:04:01 PST 2009
On 2/5/09 11:33 AM, cu wrote:
> Good day all!
> When using cairo_set_dash (i.e. drawing lines with various dash
> patterns) I am experiencing a performance hit of about 20% application
> wide. That translates to more than that for just the line drawing -
> drawing is about 80% of execution time and lines comprise about 1/3 of
> objects that need to be drawn.
> Is that an expected result? Am I doing/not doing anything specific that
> I should? Is there a way to still get dashed lines without a performance
> hit of this magnitude?
Dashes compared to normal lines are pretty expensive, especially if the
lines were always pixel aligned (and resulted in pixel aligned regions
being filled). There are some things you can do, though:
1) If you're drawing something like a dashed rectangle, where there's a
large surface area but only a small portion of it is actually rendered
to, you can often get better performance by drawing each side
separately. (I don't know if this is still the case with the scanline
2) Try to ensure that your dash patterns all result in pixel aligned
dashes; effectively this means that your lines must start/end on integer
pixels (and fully fill those pixels), and that the dash pattern should
be composed of integers only. All gets thrown out the door if you have
scaling/rotation/etc. going on, though.
More information about the cairo