1
0
mirror of https://github.com/golang/go synced 2024-10-05 18:31:28 -06:00
go/src/cmd
Todd Neal 4dcf8ea1a4 [dev.ssa] cmd/compile/ssa: speed up nilcheck
Reworks nilcheck to be performed by a depth first traversal of the
dominator tree, keeping an updated map of the values that have been
nil-checked during the traversal.

benchmark                           old ns/op     new ns/op     delta
BenchmarkNilCheckDeep1-8            1242          1825          +46.94%
BenchmarkNilCheckDeep10-8           2397          3942          +64.46%
BenchmarkNilCheckDeep100-8          29105         24873         -14.54%
BenchmarkNilCheckDeep1000-8         2742563       265760        -90.31%
BenchmarkNilCheckDeep10000-8        335690119     3157995       -99.06%

benchmark                           old MB/s     new MB/s     speedup
BenchmarkNilCheckDeep1-8            0.81         0.55         0.68x
BenchmarkNilCheckDeep10-8           4.17         2.54         0.61x
BenchmarkNilCheckDeep100-8          3.44         4.02         1.17x
BenchmarkNilCheckDeep1000-8         0.36         3.76         10.44x
BenchmarkNilCheckDeep10000-8        0.03         3.17         105.67x

benchmark                        old allocs     new allocs     delta
BenchmarkNilCheckDeep1-8         9              14             +55.56%
BenchmarkNilCheckDeep10-8        9              23             +155.56%
BenchmarkNilCheckDeep100-8       9              113            +1155.56%
BenchmarkNilCheckDeep1000-8      9              1015
+11177.78%
BenchmarkNilCheckDeep10000-8     9              10024
+111277.78%

benchmark                        old bytes     new bytes     delta
BenchmarkNilCheckDeep1-8         432           608           +40.74%
BenchmarkNilCheckDeep10-8        1008          1496          +48.41%
BenchmarkNilCheckDeep100-8       8064          11656         +44.54%
BenchmarkNilCheckDeep1000-8      73728         145240        +96.99%
BenchmarkNilCheckDeep10000-8     737280        2144411       +190.85%

Change-Id: I0f86010e9823aec04aac744fdb589b65ec8acefc
Reviewed-on: https://go-review.googlesource.com/12332
Reviewed-by: David Chase <drchase@google.com>
2015-08-03 23:05:17 +00:00
..
addr2line
api api: add go1.5.txt API file, reset next.txt 2015-07-21 02:48:35 +00:00
asm cmd/asm: fix and test CALL, JMP aliases on arm, arm64, ppc64 2015-07-28 14:19:53 +00:00
cgo cmd/cgo: discard trailing zero-sized fields in a non-empty C struct 2015-07-30 15:55:25 +00:00
compile [dev.ssa] cmd/compile/ssa: speed up nilcheck 2015-08-03 23:05:17 +00:00
cover
dist [dev.ssa] Merge remote-tracking branch 'origin/master' into mergebranch 2015-07-30 12:30:48 -07:00
doc cmd/doc: extend darwin/arm64 test TODO to arm 2015-07-28 17:39:19 +00:00
fix cmd/fix: add gotypes module 2015-07-17 01:47:14 +00:00
go cmd: delete old[5689]a 2015-07-29 03:45:26 +00:00
gofmt
internal [dev.ssa] Merge remote-tracking branch 'origin/master' into mergebranch 2015-07-30 12:30:48 -07:00
link cmd/link: fix nosplit stack overflow checks 2015-07-29 21:36:16 +00:00
newlink cmd/link: elide individual gcbits symbols 2015-07-22 20:27:24 +00:00
nm
objdump
pack
pprof cmd/pprof: fix race between viewer and web command 2015-07-23 03:51:39 +00:00
trace runtime/trace: add new package 2015-07-22 15:47:16 +00:00
vet all: link to https instead of http 2015-07-11 14:36:33 +00:00
yacc