From 5a040c5a3678857f03e77822956c916e8274b2c3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Daniel=20Mart=C3=AD?= Date: Wed, 9 Mar 2022 14:57:58 +0000 Subject: [PATCH] go/token: allocate fewer times at init time MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit go/token has had a global "keywords" map filled at init time for years. Overall, the package's init time cost is small, as per GODEBUG=inittrace=1: init go/token @0.51 ms, 0.004 ms clock, 1776 bytes, 5 allocs init go/token @0.44 ms, 0.003 ms clock, 1776 bytes, 5 allocs init go/token @0.45 ms, 0.003 ms clock, 1568 bytes, 4 allocs However, adding the map size hint does help with the allocations: init go/token @0.45 ms, 0.002 ms clock, 944 bytes, 2 allocs init go/token @0.46 ms, 0.002 ms clock, 944 bytes, 2 allocs init go/token @0.55 ms, 0.003 ms clock, 1152 bytes, 3 allocs Three samples are rather unscientific, and the clock time is basically unchanged, but we might as well reduce the allocs. Change-Id: I48121a4cea4113d991882e32f274d7b7736800dc Reviewed-on: https://go-review.googlesource.com/c/go/+/391094 Trust: Daniel Martí Run-TryBot: Daniel Martí TryBot-Result: Gopher Robot Reviewed-by: Ian Lance Taylor Run-TryBot: Ian Lance Taylor --- src/go/token/token.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/go/token/token.go b/src/go/token/token.go index dd0f4f8234..17047d8713 100644 --- a/src/go/token/token.go +++ b/src/go/token/token.go @@ -286,7 +286,7 @@ func (op Token) Precedence() int { var keywords map[string]Token func init() { - keywords = make(map[string]Token) + keywords = make(map[string]Token, keyword_end-(keyword_beg+1)) for i := keyword_beg + 1; i < keyword_end; i++ { keywords[tokens[i]] = i } -- 2.50.0