gearslaboratory / gdalUtils

R Wrappers for the Geospatial Data Abstraction Library (GDAL) Utilities
18 stars 12 forks source link

Performance issue running gdal_translate #23

Open okhoma opened 5 years ago

okhoma commented 5 years ago

The issue that I discovered is that when I run _gdaltranslate() multiple times in the loop, I see that about half of the time is spent in _gdalsetinstallation() method. Despite the fact that I explicitly call _gdalsetinstallation() on the beginning of my script.

image

I think that the problem may be caused by the following code, when gdal_installation() is called no matter if gdalUtils_gdalPath variable was set or not (line 539 of gdal_setInstallation.R):

       if(is.null(getOption("gdalUtils_gdalPath")))
       {
              rescan=TRUE  
       }
       gdal_installation_out <- gdal_installation(search_path=search_path,rescan=rescan,ignore.full_scan=ignore.full_scan,
                     verbose=verbose)
       options(gdalUtils_gdalPath=gdal_installation_out)
       if(is.null(getOption("gdalUtils_gdalPath")))
       {
       ...
       }

I believe, calculation of gdal_installation_out should go into the first brackets like follows:

       if(is.null(getOption("gdalUtils_gdalPath")))
       {
              rescan=TRUE  
              gdal_installation_out <- gdal_installation(search_path=search_path,rescan=rescan,ignore.full_scan=ignore.full_scan,
                            verbose=verbose)
              options(gdalUtils_gdalPath=gdal_installation_out)
       }
       if(is.null(getOption("gdalUtils_gdalPath")))
       {
       ...
       }

This way we will not spend time recalculating and resetting gdalUtils_gdalPath when we have it already set. It should save us almost 50% of processing time!

jgrn307 commented 5 years ago

Can you check to see if the latest version fixed it?