It was Firefox's SVGPathElement::getPointAtLength implementation that was slow, working around it by caching all the calls to it.