From b564ebbfbe6e7796dc30c642220de5266d4a3c81 Mon Sep 17 00:00:00 2001 From: Steve Yen Date: Thu, 21 Jul 2016 10:02:47 -0700 Subject: [PATCH] optimization comments on DocumentMatch instance reuse --- search/collectors/collector_top_score.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/search/collectors/collector_top_score.go b/search/collectors/collector_top_score.go index 8868c4f6..740427ec 100644 --- a/search/collectors/collector_top_score.go +++ b/search/collectors/collector_top_score.go @@ -60,7 +60,7 @@ func (tksc *TopScoreCollector) Took() time.Duration { func (tksc *TopScoreCollector) Collect(ctx context.Context, searcher search.Searcher) error { startTime := time.Now() var err error - var pre search.DocumentMatch // Pre-alloc'ed instance. + var pre search.DocumentMatch // A single pre-alloc'ed, reused instance. var next *search.DocumentMatch select { case <-ctx.Done(): @@ -104,6 +104,9 @@ func (tksc *TopScoreCollector) collectSingle(dmIn *search.DocumentMatch) { return } + // Because the dmIn will be the single, pre-allocated, reused + // instance, we need to copy the dmIn into a new, standalone + // instance before inserting into our candidate results list. dm := &search.DocumentMatch{} *dm = *dmIn