• Josh Bleecher Snyder's avatar
    [dev.ssa] cmd/compile/ssa: add nilcheckelim benchmarks · 1746e711
    Josh Bleecher Snyder authored
    These benchmarks demonstrate that
    the nilcheckelim pass is roughly O(n^2):
    
    BenchmarkNilCheckDeep1    	 2000000	       741 ns/op	   1.35 MB/s
    BenchmarkNilCheckDeep10   	 1000000	      2237 ns/op	   4.47 MB/s
    BenchmarkNilCheckDeep100  	   20000	     60713 ns/op	   1.65 MB/s
    BenchmarkNilCheckDeep1000 	     200	   7925198 ns/op	   0.13 MB/s
    BenchmarkNilCheckDeep10000	       1	1220104252 ns/op	   0.01 MB/s
    
    Profiling suggests that building the
    dominator tree is also O(n^2),
    and before size factors take over,
    considerably more expensive than nilcheckelim.
    
    Change-Id: If966b38ec52243a25f355dab871300d29db02e16
    Reviewed-on: https://go-review.googlesource.com/11520Reviewed-by: 's avatarKeith Randall <khr@golang.org>
    1746e711
Name
Last commit
Last update
..
gen Loading commit data...
TODO Loading commit data...
block.go Loading commit data...
check.go Loading commit data...
compile.go Loading commit data...
config.go Loading commit data...
copyelim.go Loading commit data...
critical.go Loading commit data...
cse.go Loading commit data...
deadcode.go Loading commit data...
deadcode_test.go Loading commit data...
deadstore.go Loading commit data...
deadstore_test.go Loading commit data...
dom.go Loading commit data...
export_test.go Loading commit data...
func.go Loading commit data...
func_test.go Loading commit data...
fuse.go Loading commit data...
id.go Loading commit data...
layout.go Loading commit data...
location.go Loading commit data...
lower.go Loading commit data...
nilcheck.go Loading commit data...
nilcheck_test.go Loading commit data...
op.go Loading commit data...
opGen.go Loading commit data...
opt.go Loading commit data...
phielim.go Loading commit data...
print.go Loading commit data...
regalloc.go Loading commit data...
rewrite.go Loading commit data...
rewriteAMD64.go Loading commit data...
rewritegeneric.go Loading commit data...
schedule.go Loading commit data...
schedule_test.go Loading commit data...
shift_test.go Loading commit data...
sparseset.go Loading commit data...
stackalloc.go Loading commit data...
type.go Loading commit data...
value.go Loading commit data...