logo separator

[mkgmap-dev] Performance with large files

From Gerd Petermann GPetermann_muenchen at hotmail.com on Mon Mar 20 06:40:00 GMT 2017

Hi Bernhard,

reg. splitter:
If I got that right you used pbf as input format for the "Germany" result and *.o5m for "Central Europe".
Since the o5m format allows faster processing the splitter times are okay for me.

reg. mkgmap:
I've added a few lines in mkgmap to report the calculation time for each tile. As you might know,
mkgmap starts a few threads (depending on the max-jobs option) and each thread processes on tile at a time.
The threads share only a few data structures, and mkgmap doesn't collect much information for each tile in
memory, so  there is no good reason for an increase of run time per processed tile.

My system is probably close to yours, a machine with 8 GB Memory and a 4 core CPU (i5) running a 64 Windows.

The attached patch adds a few lines to report the calculation time for a tile. The patched version is here:

 I've used the patched version to compile a map with the OpenfietsMap Lite style of an area around (and including) Germany .
I used the attached dach-x.poly file with osmconvert and a planet.o5m file from 2017-01-17.
and splitter with max-nodes=1000000 & keep-complete=true and found what I expected.
Times are between 7 and 35 seconds per tile, most are around ~20 secs, no increase in time/tile.
The time for the creation of the index / gmapsupp is rather short compared to the overall run time.
The complete mkgmap log is here :

So, I cannot reproduce your result for mkgmap.
Maybe your machine was busy with other work like installing updates, maybe some tiles in the added area
require much more time, maybe times depend on program options or style.

I just noticed that I did not enable assertions (-ea) so  I now try a variant with a max-nodes=1400000 and -ea.


Von: mkgmap-dev <mkgmap-dev-bounces at lists.mkgmap.org.uk> im Auftrag von Bernhard Hiller <bhil at gmx.de>
Gesendet: Sonntag, 19. März 2017 19:46:32
An: mkgmap-dev at lists.mkgmap.org.uk
Betreff: Re: [mkgmap-dev] Performance with large files

Eventually I updated Java and tried the latest version of mkgmap 3847
(and also splitter 580).
The extracts were retrieved from Geofabrik on Saturday 18.
Germany: 2.93 GB
plus additional countries: 5.62 GB (incl. Germany) which were combined
to a 7.57 GB o5m file.
splitter: Germany 14 minutes - Central Europe 20 minutes
mkgmap: Germany 30 minutes - Central Europe 133 minutes
While splitter performed better than O(n) (more like O(sqrt(n))),
mkgmap performed worse than O(n^2).

Am 19.03.2017 um 12:06 schrieb Bernhard Hiller:
> How is mkgmap expected to behave when input files grow in size? Is a
> linear inrease in calculation time - i.e. O(n) - expected, or an
> increase beyond linearity?
> E.g. when I create a map with routable lines for bicycle, mkgmap takes
> some 30 minutes for Germany alone (3 GB pbf file resulting in 850 MB
> img file), but more than  2 hours for Germany and some neighboring
> countries (7 GB o5m file, resulting 1.4 GB img).
> Are there many calculations at O(n^2) or beyond in mkgmap, or is this
> due to other factors, e.g. memory limitation?
> Notes:
> mkgmap is called by
> %JAVA% -Xmx6800M -ea -jar %MKGMAP% ....
> on 64bit Win 7;
> swapping to disc does not occur.
> But I am more interested in a general rule than in some hints for
> improving the performance in this concrete case. E.g. how I could
> estimate the duration if I add some further countries...
> Thanks for your hints.

mkgmap-dev mailing list
mkgmap-dev at lists.mkgmap.org.uk
-------------- next part --------------
A non-text attachment was scrubbed...
Name: report-times.patch
Type: application/octet-stream
Size: 714 bytes
Desc: report-times.patch
URL: <http://www.mkgmap.org.uk/pipermail/mkgmap-dev/attachments/20170320/328bc49f/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dach_x.poly
Type: application/octet-stream
Size: 225 bytes
Desc: dach_x.poly
URL: <http://www.mkgmap.org.uk/pipermail/mkgmap-dev/attachments/20170320/328bc49f/attachment-0001.obj>

More information about the mkgmap-dev mailing list