From: Josh Bleecher Snyder Date: Thu, 16 Mar 2017 06:01:31 +0000 (-0700) Subject: cmd/compile: avoid calling unnecessary Sym format routine X-Git-Tag: go1.9beta1~1133 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=ccaa8e3c6fbba08f238c5ccea437b7cac513685f;p=gostls13.git cmd/compile: avoid calling unnecessary Sym format routine Minor cleanup only. No reason to go through String() when it is just as easy to do a direct string comparison. Eliminates a surprising number of allocations. name old alloc/op new alloc/op delta Template 40.9MB ± 0% 40.9MB ± 0% ~ (p=0.190 n=10+10) Unicode 30.3MB ± 0% 30.3MB ± 0% ~ (p=0.218 n=10+10) GoTypes 116MB ± 0% 116MB ± 0% -0.09% (p=0.000 n=10+10) SSA 871MB ± 0% 869MB ± 0% -0.14% (p=0.000 n=10+9) Flate 26.2MB ± 0% 26.2MB ± 0% -0.15% (p=0.002 n=10+10) GoParser 32.5MB ± 0% 32.5MB ± 0% ~ (p=0.165 n=10+10) Reflect 80.5MB ± 0% 80.4MB ± 0% -0.12% (p=0.003 n=9+10) Tar 27.3MB ± 0% 27.3MB ± 0% -0.13% (p=0.008 n=10+9) XML 43.1MB ± 0% 43.1MB ± 0% ~ (p=0.218 n=10+10) name old allocs/op new allocs/op delta Template 402k ± 1% 400k ± 1% -0.64% (p=0.002 n=10+10) Unicode 322k ± 1% 321k ± 1% ~ (p=0.075 n=10+10) GoTypes 1.19M ± 0% 1.18M ± 0% -0.90% (p=0.000 n=10+10) SSA 7.94M ± 0% 7.81M ± 0% -1.66% (p=0.000 n=10+9) Flate 246k ± 0% 242k ± 1% -1.42% (p=0.000 n=10+10) GoParser 325k ± 1% 323k ± 1% -0.84% (p=0.000 n=10+10) Reflect 1.02M ± 0% 1.01M ± 0% -0.99% (p=0.000 n=10+10) Tar 259k ± 0% 257k ± 1% -0.72% (p=0.009 n=10+10) XML 406k ± 1% 403k ± 1% -0.69% (p=0.001 n=10+10) Change-Id: Ia129a4cd272027d627e1f3b27e9f07f93e3aa27e Reviewed-on: https://go-review.googlesource.com/38230 Reviewed-by: Brad Fitzpatrick --- diff --git a/src/cmd/compile/internal/gc/ssa.go b/src/cmd/compile/internal/gc/ssa.go index 8f61590864..4aca79307a 100644 --- a/src/cmd/compile/internal/gc/ssa.go +++ b/src/cmd/compile/internal/gc/ssa.go @@ -3205,7 +3205,7 @@ func (s *state) canSSA(n *Node) bool { return false } } - if n.Class == PPARAM && n.String() == ".this" { + if n.Class == PPARAM && n.Sym != nil && n.Sym.Name == ".this" { // wrappers generated by genwrapper need to update // the .this pointer in place. // TODO: treat as a PPARMOUT?