[josm-dev] Mappaint performance analysis ...
Ulf Lamping
ulf.lamping at googlemail.com
Fri Jan 30 23:41:37 GMT 2009
Hi!
After my JOSM mappaint perfomance improvements, I've put together some
observations which might be interesting for future effort and fine
tuning of the display.
I took a fairly large osm file and had a look at what happens if I
disable/modify certain draw features. For my measurements I used the
berlin.osm excerpt from the geofabrik:
http://download.geofabrik.de/osm/europe/germany/berlin.osm.bz2
which is ~68MB uncompressed, large enough to get reliable timings and
small enough to get it into memory.
With my test all items available are shown on the screen. As the first
paint call inits the style cache and is therefore ~2s slower than
subsequent calls, the following timings are taken from the second call
and are more or less stable with the following calls:
Prepare : 0ms
Relations: 109ms, calls= 790
Areas : 2203ms, calls=19368, visible=19368
Ways : 1860ms, calls=39137, visible=38297
Selected : 46ms, calls= 0
Nodes : 750ms, calls=362131, visible=362131
Virtual : 157ms, calls=58706
Segments : calls=394947, visible=394947
All : 5125ms
Then I disabled several drawing features step-by-step to see the impact
they have on the timings:
1) 5,1s with all features enabled
2) 4,3s (without fillAreas -> ~ 800ms)
3) 4,2s (without annotations -> ~ 100ms)
4) 4,1s (without icons -> ~ 100ms)
5) 1,5s (without using strokes -> ~2600ms)
Disabling nr. 5 (which means only 1 pixel width, no dashed lines, ...)
has - by far - the biggest performance impact!
Conclusion
Comparing the results with some experiments I've done, most of the time
(>95%?) is now needed to actually draw the elements on the screen
(remember: 750000 primitives in 1,5s!).
Regards, ULFL
Some general remarks:
Any mappaint timings below 150ms will be recognized as "smooth",
everything below ~500ms is pretty much ok to work with - but your milage
may vary.
To get any reliable timing measurements, a minimum mappaint time of
> ~150ms is necessary, otherwise time jitters and alike will make the
measurements a bit unpredictable!
More information about the josm-dev
mailing list