Skip to content
This repository was archived by the owner on Sep 11, 2020. It is now read-only.

Commit f98cab3

Browse files
authored
Merge pull request #631 from keybase/strib/use-bytes-pool-for-diffs
packfile: use buffer pool for diffs
2 parents 0d69681 + bcc296e commit f98cab3

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

plumbing/format/packfile/diff_delta.go

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package packfile
22

33
import (
44
"bytes"
5-
"io/ioutil"
65

76
"gopkg.in/src-d/go-git.v4/plumbing"
87
)
@@ -33,22 +32,32 @@ func getDelta(index *deltaIndex, base, target plumbing.EncodedObject) (plumbing.
3332
if err != nil {
3433
return nil, err
3534
}
35+
defer br.Close()
3636
tr, err := target.Reader()
3737
if err != nil {
3838
return nil, err
3939
}
40+
defer tr.Close()
4041

41-
bb, err := ioutil.ReadAll(br)
42+
bb := bufPool.Get().(*bytes.Buffer)
43+
bb.Reset()
44+
defer bufPool.Put(bb)
45+
46+
_, err = bb.ReadFrom(br)
4247
if err != nil {
4348
return nil, err
4449
}
4550

46-
tb, err := ioutil.ReadAll(tr)
51+
tb := bufPool.Get().(*bytes.Buffer)
52+
tb.Reset()
53+
defer bufPool.Put(tb)
54+
55+
_, err = tb.ReadFrom(tr)
4756
if err != nil {
4857
return nil, err
4958
}
5059

51-
db := diffDelta(index, bb, tb)
60+
db := diffDelta(index, bb.Bytes(), tb.Bytes())
5261
delta := &plumbing.MemoryObject{}
5362
_, err = delta.Write(db)
5463
if err != nil {

0 commit comments

Comments
 (0)