Opened 15 years ago
Last modified 6 years ago
#2883 closed enhancement
GDALOpen() is too slow when the direcotry containing the file to open has many files — at Initial Version
Reported by: | Kasulle | Owned by: | warmerdam |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | default | Version: | unspecified |
Severity: | normal | Keywords: | |
Cc: |
Description
==================================Description================================= I'm using GDAL to access Tile Pyramid. Each Tile is a single file, so when the image is very large, like (100,000 * 100,000), there are many files in the direcotry storing the whole Tile Pyramid. In this case, the source image is 100,000*300,000 ,and the tile size is 512*512, so there are about 160,000 files in the direcotry.
When i use GDALOpen() to open one file, it takes about 0.6s; then i copy the file to an empty directory, this time it just takes about 0.02s;
=================================My Analysis===============================
I found that: in GDALOpen() function, it first create an GDALOpenInfo object; in the GDALOpenInfo constructor, there is one statement like this:
papszSiblingFiles = VSIReadDir( osDir );
when the doDir has many files, VSIReadDir() will be very slow. Now I just change the statement to:
papszSiblingFiles = NULL;
Is there any better solution?