On 01/10/2012 11:23 PM, Frederik Ramm wrote: > Hi, > > whenver a license change layer is active and you have lots of objects > loaded, JOSM becomes noticeably slower. > > I could use a little help here. Since many of you have tweaked JOSM's > drawing performance in the past, maybe you only need to take a quick > look at this drawing code > > http://trac.openstreetmap.org/browser/applications/editors/josm/plugins/licensechange/src/org/openstreetmap/josm/plugins/licensechange/LicenseProblem.java > > > and you have an idea how it could be improved?
You can use QuadBuckets for the 'highlighted' collection. This helps a lot if the user zooms in and has only few primitives in the current viewport. (In this case, you probably need to replace "QuadBuckets<T extends OsmPrimitive>" by "QuadBuckets<T extends HasBbox>" and add a new interface HasBbox.) > The "sliding window" of four consecutive nodes in the visit function is > there to determine whether linecaps need to be drawn or not. > > Is it the trigonometry in drawSegment? (This is more or less copied from > similar code in the validation layer.) You can draw a parallel line of fixed distance without trigonometry (see the code in MapPainter [1]), but I'm not sure this will make a big difference. Usually, most time is not spend in JOSM code, but in the Java libs that actually do the painting. > Would it perhaps make sense to > cache the buffered outline instead of computing it each time? Shouldn't be necessary, as far as I can tell. [1] <http://josm.openstreetmap.de/browser/josm/trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPainter.java#L271> Paul _______________________________________________ josm-dev mailing list josm-dev@openstreetmap.org http://lists.openstreetmap.org/listinfo/josm-dev