From 5333a9cfc19ccdb8f22841255529efc246a818e0 Mon Sep 17 00:00:00 2001 From: Jarek Kowalski Date: Wed, 13 Jun 2018 22:56:17 -0700 Subject: [PATCH] reorganized dynamic splitter logic to be slightly faster and ignore hash value of zero, which introduced blocks smaller than expected on average --- object/object_splitter.go | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/object/object_splitter.go b/object/object_splitter.go index a08403937..8d3526ee1 100644 --- a/object/object_splitter.go +++ b/object/object_splitter.go @@ -87,14 +87,12 @@ type rollingHashSplitter struct { func (rs *rollingHashSplitter) add(b byte) bool { sum := rs.rh.HashByte(b) rs.currentBlockSize++ - if rs.currentBlockSize < rs.minBlockSize { - return false - } if rs.currentBlockSize >= rs.maxBlockSize { rs.currentBlockSize = 0 return true } - if sum&rs.mask == 0 { + if sum&rs.mask == 0 && rs.currentBlockSize > rs.minBlockSize && sum != 0 { + //log.Printf("splitting %v on sum %x mask %x", rs.currentBlockSize, sum, rs.mask) rs.currentBlockSize = 0 return true }