From f3cc365d246ed9c8c01ebe9f04d35d45b0a02abb Mon Sep 17 00:00:00 2001 From: Alex Roitman Date: Thu, 9 Apr 2020 09:30:38 -0700 Subject: [PATCH] Pre-allocate where and wherein arrays. --- internal/server/scanner.go | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/internal/server/scanner.go b/internal/server/scanner.go index 30c21076..8d310b8a 100644 --- a/internal/server/scanner.go +++ b/internal/server/scanner.go @@ -118,14 +118,20 @@ func (s *Server) newScanWriter( // This fills index value in wheres/whereins // so we don't have to map string field names for each tested object var ok bool - for _, where := range wheres { - if where.index, ok = sw.fmap[where.field]; ok { - sw.wheres = append(sw.wheres, where) + if len(wheres) > 0 { + sw.wheres = make([]whereT, 0, len(wheres)) + for _, where := range wheres { + if where.index, ok = sw.fmap[where.field]; ok { + sw.wheres = append(sw.wheres, where) + } } } - for _, wherein := range whereins { - if wherein.index, ok = sw.fmap[wherein.field]; ok { - sw.whereins = append(sw.whereins, wherein) + if len(whereins) > 0 { + sw.whereins = make([]whereinT, 0, len(whereins)) + for _, wherein := range whereins { + if wherein.index, ok = sw.fmap[wherein.field]; ok { + sw.whereins = append(sw.whereins, wherein) + } } } }