[OSM-dev] Simpler binary OSM formats

François Battail francois.battail at sipibox.fr
Wed Apr 29 09:45:55 UTC 2015


Le 29/04/2015 11:18, Jochen Topf a écrit :

> Looking at your proposal you seem to be very concerned with file size but not
> so much with read/write speed. From my experience reading and writing PBF is
> always CPU bound. Removing complexity could speed this up considerably. But
> if the price is that we need zlib (de)compression it might not be worth it,
> because it is rather CPU and memory intensive. Currently you can save quite
> a lot of CPU time if you do not compress the PBF blocks but leave them
> uncompressed.[...]

Exactly. From my soon to be released code:

"Tests were made on planet-141112.osm.pbf (28406347563 bytes) with an
AMD FX 8350 (8 cores) 4 GHz, 32 GB, data on a WD Red 2TB SATA 3 disk,
system: Ubuntu 14.04.1 installed on an Intel SSD SATA 3.
No inserts were made on the database or dumps, only pbf parsing.

reference (time cp planet-141112.osm.pbf /dev/null): 205s (bandwidth: 
132 MiB/s)

with liprotobuf-c.so, default allocator, without assembly support: 799s 
(bandwidth: 33.9 MiB/s)
with liprotobuf-c.so, sw_pool_t allocator, little assembly support: 629s 
(bandwidth: 43.1 MiB/s)"

Most of the time is spent in zlib, libprotobuf-c and memory allocations. 
I've addressed the last point using x86_64 assembly language and a pool 
allocator. I think a rewrite of an optimized libprotobuf library would 
help to gain some speed but the cost is very high (at least for my 
application).

Better advice I can give: use SSD ;-)

Best regards




More information about the dev mailing list