]> Cypherpunks repositories - gostls13.git/commitdiff
internal/zstd: optimize skipFrame by using io.CopyN
authoraimuz <mr.imuz@gmail.com>
Wed, 25 Sep 2024 14:25:58 +0000 (14:25 +0000)
committerGopher Robot <gobot@golang.org>
Thu, 26 Sep 2024 17:06:55 +0000 (17:06 +0000)
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: dc5f836cc76ea1355effa49a665b9091a888541b
GitHub-Pull-Request: golang/go#69619
Reviewed-on: https://go-review.googlesource.com/c/go/+/615716
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Carlos Amedee <carlos@golang.org>
src/internal/zstd/zstd.go

index 0370f601cbf45109266a1ab49abdbf13ff134e58..d4eac399aff0be616afe5e92f9e67db29a2abff2 100644 (file)
@@ -358,30 +358,12 @@ func (r *Reader) skipFrame() error {
                return nil
        }
 
-       var skip []byte
-       const chunk = 1 << 20 // 1M
-       for size >= chunk {
-               if len(skip) == 0 {
-                       skip = make([]byte, chunk)
-               }
-               if _, err := io.ReadFull(r.r, skip); err != nil {
-                       return r.wrapNonEOFError(relativeOffset, err)
-               }
-               relativeOffset += chunk
-               size -= chunk
-       }
-       if size > 0 {
-               if len(skip) == 0 {
-                       skip = make([]byte, size)
-               }
-               if _, err := io.ReadFull(r.r, skip); err != nil {
-                       return r.wrapNonEOFError(relativeOffset, err)
-               }
-               relativeOffset += int(size)
+       n, err := io.CopyN(io.Discard, r.r, int64(size))
+       relativeOffset += int(n)
+       if err != nil {
+               return r.wrapNonEOFError(relativeOffset, err)
        }
-
        r.blockOffset += int64(relativeOffset)
-
        return nil
 }