Up until recently, WebKit used to draw SVG circles and ellipses by breaking them down into 100-segment paths. This was done to get consistent auto-test results across different platforms and rendering libraries. Unfortunately, it wasn’t very fast. With Qt 4.7’s WebKit, my machine reaches a meager 17 FPS on the SVG version of The Man in Blue’s benchmark which is pretty sad.
I spent some time digging into this issue and have finally landed a change upstream that makes WebKit take proper advantage of the underlying libraries – in our case by using QPainterPath::addEllipse() to compose the shapes instead of QPainterPath::lineTo(). This bumps our FPS on the aforementioned test to 51, three times faster!
For the specifically curious, here’s the webkit.org commit: r69517