[gdal-dev] Question on TIFF compression alternatives
Neumann, Andreas
a.neumann at carto.net
Fri Oct 14 04:01:50 PDT 2016
Hi Even,
Thank you for your detailed reply.
I should have added that my concern is mainly about random access to
parts of the images - for QGIS server and QGIS Desktop.
I have internal pyramids. I am not so sure if it is tiled or not. Does
gdalinfo reveal whether the TIFF was created with "TILED=YES"?
So from your analysis it looks like lzma is the slowest, but overall,
the differences aren't that huge. I don't know how random access to
parts of the image changes the game a bit, compared to your analysis
where you examine the decompression of the whole image - right?
Thanks,
Andreas
On 2016-10-14 12:09, Even Rouault wrote:
> Le vendredi 14 octobre 2016 09:45:38, Neumann, Andreas a écrit :
>
>> Hi,
>>
>> I have a question on TIFF compression alternatives.
>>
>> My data of concern is 8bit gray value. Lots of white pixel (>95%), the
>> rest is black pixels (content) and some gray pixels because of
>> antialiasing.
>>
>> I would like to compress to save some storage, but I need a good
>> performance. What is the recommended compression that is fast on
>> decompression?
>>
>> I tried DEFLATE, but it is rather slow to decompress. Would LZW or
>> PACKBITS be preferred in this situation? How about LZMA? I would like to
>> avoid non-compressed data, because I use SSD storage for performance
>> reasons.
>
> My findings on a 37614 x 18816 8 bit image (a scan of a text page) that should
> be similar to what you describe.
>
> Decompression time is the result of the second run of "time gdalinfo -
> checksum" (so you can consider that I/O is cached by the OS and you measure
> essentially CPU time. storage is spinning disk)
>
> No tiling:
>
> Size Compression Decompression time
> 707895750 out_nocompression.tif 9.3 s
>
> 11239972 out_deflate.tif 10.8 s
> 17749306 out_lzw.tif 10.5 s
> 12337710 out_lzma.tif 12.6 s
> 36201320 out_packbits.tif 9.9 s
>
> Tiling:
>
> Size Compression Decompression time
> 8813833 out_deflate_tiled.tif 11.1 s
> 14614121 out_lzw_tiled.tif 11.0 s
> 8479238 out_lzma_tiled.tif 13.0 s
> 37018470 out_packbits_tiled.tif 10.2 s
>
> Note: in the tiling case, the gdalinfo -checksum benchmark might not be ideal
> as it proceeds line by line (and not block by block), thus there's a lot of
> copying between cached blocks and output buffer that is done.
>
> So I've done time gdal_translate XXX.tif /vsimem/out.tif -q :
>
> deflate tiled: 2.5 s
> lzw tiled: 2.3 s
> packbits tiled: 1.5 s
> lzma tiled: 4.5 s
>
> Times for non tiled files are essentially the same.
>
> Note: if you use tiling and you have whole tiles that are at white value, if
> you use GDAL trunk, set the SPARSE_OK=YES creation option and set the nodata
> value to 255, then those tiles will be entirely omitted from the compressed
> file. This might save a few extra bytes, and also some decompression time.
>
> gdal_translate out_nocompression.tif out_packbits_tiled.tif -co tiled=yes -co
> compress=packbits
> gdal_translate out_nocompression.tif out_packbits_tiled_sparse.tif -co
> tiled=yes -a_nodata 255 -co compress=packbits -co sparse_ok=yes
>
> 37018470 out_packbits_tiled.tif
> 30409074 out_packbits_tiled_sparse.tif
>
> time gdal_translate out_packbits_tiled_sparse.tif /vsimem/out.tif -q: 1.3 s
>
> Even
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20161014/f331cdff/attachment.html>
More information about the gdal-dev
mailing list