From f6f1628b15e135c7d4f0c5dff1c193c7b16f9a92 Mon Sep 17 00:00:00 2001 From: Marty Schoch Date: Thu, 10 Sep 2015 08:19:05 -0400 Subject: [PATCH] avoid doing unnecessary work: benchmark old ns/op new ns/op delta BenchmarkBatch-4 20738739 17047158 -17.80% benchmark old allocs new allocs delta BenchmarkBatch-4 136423 136160 -0.19% benchmark old bytes new bytes delta BenchmarkBatch-4 20277781 7168772 -64.65% --- index/firestorm/comp.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/index/firestorm/comp.go b/index/firestorm/comp.go index b6e920a3..bd0bfb01 100644 --- a/index/firestorm/comp.go +++ b/index/firestorm/comp.go @@ -100,12 +100,14 @@ func (c *Compensator) Migrate(docID []byte, docNum uint64, oldDocNums []uint64) defer c.deletedMutex.Unlock() // clone deleted doc numbers and mutate - newDeletedDocNumbers := c.deletedDocNumbers.Clone() - for _, oldDocNum := range oldDocNums { - newDeletedDocNumbers.Set(uint(oldDocNum)) + if len(oldDocNums) > 0 { + newDeletedDocNumbers := c.deletedDocNumbers.Clone() + for _, oldDocNum := range oldDocNums { + newDeletedDocNumbers.Set(uint(oldDocNum)) + } + // update pointer + c.deletedDocNumbers = newDeletedDocNumbers } - // update pointer - c.deletedDocNumbers = newDeletedDocNumbers // remove entry from in-flight if it still has same doc num val := c.inFlight.Get(&InFlightItem{docID: docID})