go/src
Josh Bleecher Snyder f9fb4579e1 cmd/compile: disable typPtr caching in the backend
The only new Types that the backend introduces
are pointers to Types generated by the frontend.
Usually, when we generate a *T,
we cache the resulting Type in T,
to avoid recreating it later.
However, that caching is not concurrency safe.
Rather than add mutexes, this CL disables that
caching before starting the backend.
The backend generates few enough new *Ts that the
performance impact of this is small, particularly
if we pre-create some commonly used *Ts.

Updates #15756

name       old alloc/op    new alloc/op    delta
Template      40.3MB ± 0%     40.4MB ± 0%  +0.18%  (p=0.001 n=10+10)
Unicode       29.8MB ± 0%     29.8MB ± 0%  +0.11%  (p=0.043 n=10+9)
GoTypes        114MB ± 0%      115MB ± 0%  +0.33%  (p=0.000 n=9+10)
SSA            855MB ± 0%      859MB ± 0%  +0.40%  (p=0.000 n=10+10)
Flate         25.7MB ± 0%     25.8MB ± 0%  +0.35%  (p=0.000 n=10+10)
GoParser      31.9MB ± 0%     32.1MB ± 0%  +0.58%  (p=0.000 n=10+10)
Reflect       79.6MB ± 0%     79.9MB ± 0%  +0.31%  (p=0.000 n=10+10)
Tar           26.9MB ± 0%     26.9MB ± 0%  +0.21%  (p=0.000 n=10+10)
XML           42.5MB ± 0%     42.7MB ± 0%  +0.52%  (p=0.000 n=10+9)

name       old allocs/op   new allocs/op   delta
Template        394k ± 1%       393k ± 0%    ~     (p=0.529 n=10+10)
Unicode         319k ± 1%       319k ± 0%    ~     (p=0.720 n=10+9)
GoTypes        1.15M ± 0%      1.15M ± 0%  +0.14%  (p=0.035 n=10+10)
SSA            7.53M ± 0%      7.56M ± 0%  +0.45%  (p=0.000 n=9+10)
Flate           238k ± 0%       238k ± 1%    ~     (p=0.579 n=10+10)
GoParser        318k ± 1%       320k ± 1%  +0.64%  (p=0.001 n=10+10)
Reflect        1.00M ± 0%      1.00M ± 0%    ~     (p=0.393 n=10+10)
Tar             254k ± 0%       254k ± 1%    ~     (p=0.075 n=10+10)
XML             395k ± 0%       397k ± 0%  +0.44%  (p=0.001 n=10+9)

Change-Id: I6c031ed4f39108f26969c5712b73aa2fc08cd10a
Reviewed-on: https://go-review.googlesource.com/38417
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2017-03-22 00:14:39 +00:00
..
archive archive/zip: parallelize benchmarks 2017-03-15 18:26:51 +00:00
bufio
builtin
bytes bytes: add optimized countByte for amd64 2017-03-21 20:25:17 +00:00
cmd cmd/compile: disable typPtr caching in the backend 2017-03-22 00:14:39 +00:00
compress Revert "all: test adjustments for the iOS builder" 2017-03-04 00:01:14 +00:00
container
context
crypto crypto/*: fix spelling of 'below' 2017-03-20 16:03:18 +00:00
database/sql database/sql: fix spelling mistake in tests 2017-03-08 18:27:19 +00:00
debug cmd/link: write dwarf sections 2017-03-01 04:51:03 +00:00
encoding encoding/gob: document the extra byte after a singleton 2017-03-21 04:07:46 +00:00
errors
expvar expvar: add benchmark for (*Map).Set with per-goroutine keys 2017-03-10 19:09:48 +00:00
flag flag: validate Int and Uint values to be in range 2017-03-21 17:00:26 +00:00
fmt
go go/build: remove unused returnImports parameter 2017-03-21 02:47:36 +00:00
hash hash/crc32: improve performance for ppc64le 2017-03-17 12:28:57 +00:00
html text/template,html/template: state that Funcs must happen before parsing 2017-03-21 04:07:35 +00:00
image image/png: decode Gray8 transparent images. 2017-03-17 07:50:05 +00:00
index/suffixarray
internal go/internal/srcimporter: skip tests on iOS 2017-03-08 22:31:00 +00:00
io
log
math math/big: make nat.setUint64 vet-friendly 2017-03-11 00:39:23 +00:00
mime mime: handling invalid mime media parameters 2017-03-17 13:59:31 +00:00
net net/http/cookiejar: fix out-of-bounds errors on malformed domains 2017-03-21 06:36:56 +00:00
os syscall, os: fix FreeBSD 9 build 2017-03-21 22:37:27 +00:00
path
plugin
reflect runtime: remove unused *chantype parameters 2017-03-21 17:10:16 +00:00
regexp regexp/syntax: remove unused flags parameter 2017-03-06 19:11:09 +00:00
runtime bytes: add optimized countByte for amd64 2017-03-21 20:25:17 +00:00
sort
strconv strconv: replace small int string table with constant string 2017-03-17 20:33:46 +00:00
strings
sync
syscall syscall, os: fix FreeBSD 9 build 2017-03-21 22:37:27 +00:00
testing testing: fix Benchmark() to start at 1 iteration, not 100 2017-03-01 11:06:34 +00:00
text text/template,html/template: state that Funcs must happen before parsing 2017-03-21 04:07:35 +00:00
time time: make the ParseInLocation test more robust 2017-03-09 18:31:42 +00:00
unicode
unsafe
vendor/golang_org/x vendor: import golang.org/x/net/proxy 2017-03-02 01:28:16 +00:00
Make.dist
all.bash
all.bat
all.rc
androidtest.bash
bootstrap.bash
buildall.bash src/*.bash: use tabs consistently 2017-03-09 21:30:31 +00:00
clean.bash
clean.bat
clean.rc
cmp.bash
iostest.bash *.bash: always use the same string equality operator 2017-03-14 21:46:31 +00:00
make.bash *.bash: always use the same string equality operator 2017-03-14 21:46:31 +00:00
make.bat
make.rc
naclmake.bash
nacltest.bash
race.bash
race.bat
run.bash *.bash: always use the same string equality operator 2017-03-14 21:46:31 +00:00
run.bat
run.rc