[OpenLayers-Dev] VML rendering in IE is slow with big geometries.
Proposed Fix.
Roald de Wit
rdewit at users.sourceforge.net
Tue Oct 16 21:58:17 EDT 2007
Hi List,
Before I create a patch, I'd like to discuss the following issue. We
found out that it takes IE (6 & 7) a long time to draw a linestring
consisting of many coordinates (3000+).
A little investigation in Renderer/VML.js (drawLine) showed that the
biggest slowdown was the concatenation of the 'path' string.
I managed to reduce the time to create the path string dramatically from
40+ seconds to 1 second by mimicking a StringBuffer (put path string
pieces in array and join them in the end).
So, in short, this:
path += " " + x.toFixed() + "," + y.toFixed() + " l ";
is replaced with this:
path.push( " " + x.toFixed() + "," + y.toFixed() + " l ");
The same slowdown most probably applies to the other drawing methods in
this class.
My question is: what would be the best way to tackle this?
Suggested option:
- create a OpenLayers.Util.StringBuffer object (with append and toString
methods)
- create a 'path' object that extends StringBuffer that will be used by
VML.js and possibly SVG.js
I also added a few other optimisations (will put more of that in the
ticket created for this: #1095).
Any suggestions?
Greetings, Roald
More information about the Dev
mailing list