[gdal-dev] Help with idiomatic GDAL solution for raster algebra benchmark

Alex HighViz alexhighviz at hotmail.com
Wed Jun 20 09:16:58 PDT 2018


On 19/06/2018 18:41, Mateusz Loskot wrote:
> On 19 June 2018 at 11:50, Alex HighViz <alexhighviz at hotmail.com> wrote:
>> On 19/06/2018 10:28, Mateusz Loskot wrote:
>>> On 19 June 2018 at 11:22, Alex HighViz <alexhighviz at hotmail.com> wrote:
>>>> Regrettably I overstated the performance in my previous post, due to a bug that is now solved. With the solved bug, Pronto is about 50% slower than GDAL directly. I believe this is still good considering the benefits, but not as glamorous as I first thought. I have also applied it on a set of 100000 x 1000 rasters and the results are consistent.
>>>>
>>>>
>>>>
>>>> I was wondering if the slow performance may be due to the standard iterators
>>>> debugging enabled.
>>>>
>>>>
>>>> Best regards,

I have looked at the benchmark a bit further, and considered that it 
might have to do with the way in which the different solutions access 
the data.

The Pronto Raster code uses band->GetLockedBlockRef(...), whereas my the 
GDAL-only reference uses band->ReadBlock(...).

This means that Pronto uses the cache and the GDAL-only reference 
doesn't.  My next thought was to use band->RasterIO(...) as the 
reference because that is more appropriate, considering that it also 
uses the cache. And finally, I used band->GetLockedBlockRef() in a GDAL 
only solution.

I ended up with the following timings:

GDAL-Only using ReadBlock(...)                         :   7.7 seconds
GDAL-Only using RasterIO(...)                            : 30.1 seconds
GDAL-Only using GetLockedBlockRef(...)         :   8.9 seconds
Pronto Raster using GetLockedBlockRef(...)     : 10.6 seconds

I suppose the relatively poor performance of RasterIO is known 
(https://lists.osgeo.org/pipermail/gdal-dev/2008-March/016357.html and 
https://trac.osgeo.org/gdal/ticket/2266), although I don't understand 
the reason for it.








More information about the gdal-dev mailing list