mirror of
https://github.com/octoleo/syncthing.git
synced 2024-11-09 14:50:56 +00:00
lib/scanner: Allocate structure for final partial block (#7310)
Benchmark results on Linux/amd64, using updated benchmark for old and new: name old time/op new time/op delta HashFile-8 88.6ms ± 1% 88.3ms ± 1% -0.33% (p=0.046 n=19+19) name old speed new speed delta HashFile-8 201MB/s ± 1% 202MB/s ± 1% +0.33% (p=0.044 n=19+19) name old alloc/op new alloc/op delta HashFile-8 59.4kB ± 0% 46.1kB ± 0% -22.47% (p=0.000 n=14+20) name old allocs/op new allocs/op delta HashFile-8 29.0 ± 0% 27.0 ± 0% -6.90% (p=0.000 n=20+20) Co-authored-by: greatroar <@>
This commit is contained in:
parent
8b86171642
commit
fbe52faf49
@ -30,7 +30,7 @@ func Blocks(ctx context.Context, r io.Reader, blocksize int, sizehint int64, cou
|
||||
}
|
||||
|
||||
hf := sha256.New()
|
||||
hashLength := hf.Size()
|
||||
const hashLength = sha256.Size
|
||||
|
||||
var weakHf hash.Hash32 = noopHash{}
|
||||
var multiHf io.Writer = hf
|
||||
@ -48,7 +48,11 @@ func Blocks(ctx context.Context, r io.Reader, blocksize int, sizehint int64, cou
|
||||
// Allocate contiguous blocks for the BlockInfo structures and their
|
||||
// hashes once and for all, and stick to the specified size.
|
||||
r = io.LimitReader(r, sizehint)
|
||||
numBlocks := int(sizehint / int64(blocksize))
|
||||
numBlocks := sizehint / int64(blocksize)
|
||||
remainder := sizehint % int64(blocksize)
|
||||
if remainder != 0 {
|
||||
numBlocks++
|
||||
}
|
||||
blocks = make([]protocol.BlockInfo, 0, numBlocks)
|
||||
hashes = make([]byte, 0, hashLength*numBlocks)
|
||||
}
|
||||
|
@ -551,7 +551,7 @@ func (l testfileList) String() string {
|
||||
var initOnce sync.Once
|
||||
|
||||
const (
|
||||
testdataSize = 17 << 20
|
||||
testdataSize = 17<<20 + 1
|
||||
testdataName = "_random.data"
|
||||
)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user