]> Cypherpunks repositories - gostls13.git/commitdiff
archive/zip: preallocate fileList size for Reader.Open
authorOlivier Mengué <olivier.mengue@gmail.com>
Thu, 6 Mar 2025 18:44:22 +0000 (19:44 +0100)
committerGopher Robot <gobot@golang.org>
Fri, 7 Mar 2025 19:31:30 +0000 (11:31 -0800)
When building the index of file entries for Reader.Open (when the Reader
is used as an io/fs.FS), reduce reallocations by pre-allocating the
count of entries based on the count of file entries.

Change-Id: I05048337cb5e752054b3e984a8a5ec5199c4589b
Reviewed-on: https://go-review.googlesource.com/c/go/+/655476
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Reviewed-by: Junyang Shao <shaojunyang@google.com>
Auto-Submit: Ian Lance Taylor <iant@golang.org>

src/archive/zip/reader.go

index 2246d56558bbeea48ea23c3214eaca7d4afaf615..963526db1109887d78ace1a64a8cb17c1ecdf82b 100644 (file)
@@ -804,6 +804,9 @@ func toValidName(name string) string {
 
 func (r *Reader) initFileList() {
        r.fileListOnce.Do(func() {
+               // Preallocate the minimum size of the index.
+               // We may also synthesize additional directory entries.
+               r.fileList = make([]fileListEntry, 0, len(r.File))
                // files and knownDirs map from a file/directory name
                // to an index into the r.fileList entry that we are
                // building. They are used to mark duplicate entries.