diff options
author | Daniel Martí <mvdan@mvdan.cc> | 2018-03-05 10:46:44 +0000 |
---|---|---|
committer | Daniel Martí <mvdan@mvdan.cc> | 2018-03-15 17:24:39 +0000 |
commit | cd2cb6e3f57e4820d66dbefd7577048c38ee9e04 (patch) | |
tree | 24d629dcde2bdaedb95289dae069e7b39a150717 /src/cmd/compile/internal/ssa/deadstore.go | |
parent | a35ec9a59e29dc11a15ded047a618298a59599b4 (diff) | |
download | go-cd2cb6e3f57e4820d66dbefd7577048c38ee9e04.tar.gz go-cd2cb6e3f57e4820d66dbefd7577048c38ee9e04.zip |
cmd/compile: cache sparse maps across ssa passes
This is done for sparse sets already, but it was missing for sparse
maps. Only affects deadstore and regalloc, as they're the only ones that
use sparse maps.
name old time/op new time/op delta
DSEPass-4 247µs ± 0% 216µs ± 0% -12.75% (p=0.008 n=5+5)
DSEPassBlock-4 3.05ms ± 1% 2.87ms ± 1% -6.02% (p=0.002 n=6+6)
CSEPass-4 2.30ms ± 0% 2.32ms ± 0% +0.53% (p=0.026 n=6+6)
CSEPassBlock-4 23.8ms ± 0% 23.8ms ± 0% ~ (p=0.931 n=6+5)
DeadcodePass-4 51.7µs ± 1% 51.5µs ± 2% ~ (p=0.429 n=5+6)
DeadcodePassBlock-4 734µs ± 1% 742µs ± 3% ~ (p=0.394 n=6+6)
MultiPass-4 152µs ± 0% 149µs ± 2% ~ (p=0.082 n=5+6)
MultiPassBlock-4 2.67ms ± 1% 2.41ms ± 2% -9.77% (p=0.008 n=5+5)
name old alloc/op new alloc/op delta
DSEPass-4 41.2kB ± 0% 0.1kB ± 0% -99.68% (p=0.002 n=6+6)
DSEPassBlock-4 560kB ± 0% 4kB ± 0% -99.34% (p=0.026 n=5+6)
CSEPass-4 189kB ± 0% 189kB ± 0% ~ (all equal)
CSEPassBlock-4 3.10MB ± 0% 3.10MB ± 0% ~ (p=0.444 n=5+5)
DeadcodePass-4 10.5kB ± 0% 10.5kB ± 0% ~ (all equal)
DeadcodePassBlock-4 164kB ± 0% 164kB ± 0% ~ (all equal)
MultiPass-4 240kB ± 0% 199kB ± 0% -17.06% (p=0.002 n=6+6)
MultiPassBlock-4 3.60MB ± 0% 2.99MB ± 0% -17.06% (p=0.002 n=6+6)
name old allocs/op new allocs/op delta
DSEPass-4 8.00 ± 0% 4.00 ± 0% -50.00% (p=0.002 n=6+6)
DSEPassBlock-4 240 ± 0% 120 ± 0% -50.00% (p=0.002 n=6+6)
CSEPass-4 9.00 ± 0% 9.00 ± 0% ~ (all equal)
CSEPassBlock-4 1.35k ± 0% 1.35k ± 0% ~ (all equal)
DeadcodePass-4 3.00 ± 0% 3.00 ± 0% ~ (all equal)
DeadcodePassBlock-4 9.00 ± 0% 9.00 ± 0% ~ (all equal)
MultiPass-4 11.0 ± 0% 10.0 ± 0% -9.09% (p=0.002 n=6+6)
MultiPassBlock-4 165 ± 0% 150 ± 0% -9.09% (p=0.002 n=6+6)
Change-Id: I43860687c88f33605eb1415f36473c5cfe8fde4a
Reviewed-on: https://go-review.googlesource.com/98449
Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
Diffstat (limited to 'src/cmd/compile/internal/ssa/deadstore.go')
-rw-r--r-- | src/cmd/compile/internal/ssa/deadstore.go | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/cmd/compile/internal/ssa/deadstore.go b/src/cmd/compile/internal/ssa/deadstore.go index bbeb990f17..e1ce980e5c 100644 --- a/src/cmd/compile/internal/ssa/deadstore.go +++ b/src/cmd/compile/internal/ssa/deadstore.go @@ -19,7 +19,8 @@ func dse(f *Func) { defer f.retSparseSet(loadUse) storeUse := f.newSparseSet(f.NumValues()) defer f.retSparseSet(storeUse) - shadowed := newSparseMap(f.NumValues()) // TODO: cache + shadowed := f.newSparseMap(f.NumValues()) + defer f.retSparseMap(shadowed) for _, b := range f.Blocks { // Find all the stores in this block. Categorize their uses: // loadUse contains stores which are used by a subsequent load. |