Skip to content

Commit ca1123f

Browse files
aimuzgopherbot
authored andcommitted
internal/zstd: optimize skipFrame by using io.CopyN
Replaced the manual byte skipping logic with io.CopyN to improve performance and reduce memory allocation. This change simplifies the code by directly discarding the bytes read, enhancing readability and efficiency. Change-Id: Id11496d072fb554c394947d08e63616ca48ecab4 GitHub-Last-Rev: dc5f836 GitHub-Pull-Request: #69619 Reviewed-on: https://go-review.googlesource.com/c/go/+/615716 Auto-Submit: Ian Lance Taylor <[email protected]> Reviewed-by: Ian Lance Taylor <[email protected]> LUCI-TryBot-Result: Go LUCI <[email protected]> Reviewed-by: Carlos Amedee <[email protected]>
1 parent ba42120 commit ca1123f

File tree

1 file changed

+4
-22
lines changed

1 file changed

+4
-22
lines changed

src/internal/zstd/zstd.go

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -358,30 +358,12 @@ func (r *Reader) skipFrame() error {
358358
return nil
359359
}
360360

361-
var skip []byte
362-
const chunk = 1 << 20 // 1M
363-
for size >= chunk {
364-
if len(skip) == 0 {
365-
skip = make([]byte, chunk)
366-
}
367-
if _, err := io.ReadFull(r.r, skip); err != nil {
368-
return r.wrapNonEOFError(relativeOffset, err)
369-
}
370-
relativeOffset += chunk
371-
size -= chunk
372-
}
373-
if size > 0 {
374-
if len(skip) == 0 {
375-
skip = make([]byte, size)
376-
}
377-
if _, err := io.ReadFull(r.r, skip); err != nil {
378-
return r.wrapNonEOFError(relativeOffset, err)
379-
}
380-
relativeOffset += int(size)
361+
n, err := io.CopyN(io.Discard, r.r, int64(size))
362+
relativeOffset += int(n)
363+
if err != nil {
364+
return r.wrapNonEOFError(relativeOffset, err)
381365
}
382-
383366
r.blockOffset += int64(relativeOffset)
384-
385367
return nil
386368
}
387369

0 commit comments

Comments
 (0)