From 40780254ae8d164856d777b5a751acbecf90674f Mon Sep 17 00:00:00 2001 From: Steve Yen Date: Sat, 7 Jan 2017 22:05:52 -0800 Subject: [PATCH] optimize upsidedown mergeOldAndNew existing key maps The optimization is to provide a better initial size to the map constructor and to use a 0-byte-sized struct{} as the map values. --- index/upsidedown/upsidedown.go | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/index/upsidedown/upsidedown.go b/index/upsidedown/upsidedown.go index a8fd1aee..40cb2293 100644 --- a/index/upsidedown/upsidedown.go +++ b/index/upsidedown/upsidedown.go @@ -502,14 +502,18 @@ func (udc *UpsideDownCouch) mergeOldAndNew(backIndexRow *BackIndexRow, rows []in updateRows = make([]UpsideDownCouchRow, 0, len(rows)) deleteRows = make([]UpsideDownCouchRow, 0, len(rows)) - existingTermKeys := make(map[string]bool) - for _, key := range backIndexRow.AllTermKeys() { - existingTermKeys[string(key)] = true + var mark struct{} + + backIndexTermKeys := backIndexRow.AllTermKeys() + existingTermKeys := make(map[string]struct{}, len(backIndexTermKeys)) + for _, key := range backIndexTermKeys { + existingTermKeys[string(key)] = mark } - existingStoredKeys := make(map[string]bool) - for _, key := range backIndexRow.AllStoredKeys() { - existingStoredKeys[string(key)] = true + backIndexStoredKeys := backIndexRow.AllStoredKeys() + existingStoredKeys := make(map[string]struct{}, len(backIndexStoredKeys)) + for _, key := range backIndexStoredKeys { + existingStoredKeys[string(key)] = mark } keyBuf := GetRowBuffer()