• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

OSGeo / gdal / 17122751530
72%

Build:
DEFAULT BRANCH: master
Ran 21 Aug 2025 10:21AM UTC
Jobs 1
Files 1952
Run time 7min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

21 Aug 2025 09:22AM UTC coverage: 71.162% (+0.003%) from 71.159%
17122751530

push

github

web-flow
VSI archive (/vsizip/, /vsiar/) performance improvements with large number of files (#12939)

Traversal of large archives (many entries, especially in a large
hierarchy) can be slow.

This change massively improves performance of random lookups by path
within an archive, as well as traversal using VSIReadDirRecursive. The
main change is to avoid full traversal of the VSIArchiveContent::entries
array for each path lookup.

I achieved this by building an index mapping each directory entry
to the indices of its children in the entries list, and using that index
to speed up lookups by path.

This also has a massive perf improvement for
VSIReadDirRecursive since it works by calling ReadDirEx for each
subdirectory (which previously meant looking at all entries). Now it
uses the directory index to immediately jump to where the directory is
in the entries list, avoiding visiting other entries.

On my laptop, ReadDirRecursive on a zip file containing 600 dirs each
containing 600 files:

* previous master gdal: 728 seconds
* after this change: 4.2 seconds

32 of 34 new or added lines in 1 file covered. (94.12%)

66 existing lines in 26 files now uncovered.

578524 of 812970 relevant lines covered (71.16%)

286750.1 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
2
90.84
0.0% port/cpl_vsil_abstract_archive.cpp

Uncovered Existing Lines

Lines Coverage ∆ File
1
91.33
0.03% frmts/gtiff/gtiffdataset_read.cpp
1
54.68
0.06% frmts/gtiff/libtiff/tif_dirwrite.c
1
63.93
0.8% frmts/gtiff/libtiff/tif_open.c
1
82.62
-0.04% frmts/jpeg/jpgdataset.cpp
1
87.18
-0.07% frmts/vrt/vrtsourcedrasterband.cpp
1
86.26
-0.06% frmts/vrt/vrtsources.cpp
1
86.2
-0.08% gcore/gdaldriver.cpp
1
94.64
-0.32% gcore/gdalthreadsafedataset.cpp
1
91.87
0.04% gcore/rasterio.cpp
1
88.24
0.38% port/cpl_minixml.cpp
1
91.54
-0.31% port/cpl_vsil_unix_stdio_64.cpp
2
87.69
0.0% alg/viewshed/viewshed_executor.cpp
2
56.64
0.0% frmts/gtiff/libtiff/tif_write.c
2
34.59
-1.5% frmts/null/nulldataset.cpp
2
38.98
-0.32% frmts/raw/cpgdataset.cpp
2
84.23
-0.07% gcore/gdaldataset.cpp
2
86.0
-1.33% ogr/ogr_proj_p.cpp
2
92.97
-0.45% ogr/ogrsf_frmts/mvt/mvt_tile.cpp
3
89.7
-0.09% port/cpl_string.cpp
3
91.27
-0.9% port/cplstringlist.cpp
3
86.91
-0.24% port/cpl_vsil_curl_streaming.cpp
3
69.81
0.0% port/cpl_vsisimple.cpp
4
41.04
0.23% frmts/gtiff/libtiff/tif_dirinfo.c
4
87.48
-0.1% gcore/overview.cpp
9
69.15
-1.53% port/cpl_error.cpp
12
34.05
-0.1% frmts/gtiff/libtiff/tif_dirread.c
Jobs
ID Job ID Ran Files Coverage
1 17122751530.1 21 Aug 2025 10:21AM UTC 1952
71.16
GitHub Action Run
Source Files on build 17122751530
  • Tree
  • List 1952
  • Changed 49
  • Source Changed 2
  • Coverage Changed 49
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #17122751530
  • e572148b on github
  • Prev Build on master (#17076108984)
  • Next Build on master (#17150784334)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc