Josh Bleecher Snyder
386765afdf
cmd/compile: move Node.Class to flags
...
Put it at position zero, since it is fairly hot.
This shrinks gc.Node into a smaller size class on 64 bit systems.
name old time/op new time/op delta
Template 193ms ± 5% 192ms ± 3% ~ (p=0.353 n=94+93)
Unicode 86.1ms ± 5% 85.0ms ± 4% -1.23% (p=0.000 n=95+98)
GoTypes 546ms ± 3% 544ms ± 4% -0.40% (p=0.007 n=94+97)
Compiler 2.56s ± 3% 2.54s ± 3% -0.67% (p=0.000 n=99+97)
SSA 5.13s ± 2% 5.10s ± 3% -0.55% (p=0.000 n=94+98)
Flate 122ms ± 6% 121ms ± 4% -0.75% (p=0.002 n=97+95)
GoParser 144ms ± 5% 144ms ± 4% ~ (p=0.298 n=98+97)
Reflect 348ms ± 4% 349ms ± 4% ~ (p=0.350 n=98+97)
Tar 105ms ± 5% 104ms ± 5% ~ (p=0.154 n=96+98)
XML 200ms ± 5% 198ms ± 4% -0.71% (p=0.015 n=97+98)
[Geo mean] 330ms 328ms -0.52%
name old user-time/op new user-time/op delta
Template 229ms ±11% 224ms ± 7% -2.16% (p=0.001 n=100+87)
Unicode 109ms ± 5% 109ms ± 6% ~ (p=0.897 n=96+91)
GoTypes 712ms ± 4% 709ms ± 4% ~ (p=0.085 n=96+98)
Compiler 3.41s ± 3% 3.36s ± 3% -1.43% (p=0.000 n=98+98)
SSA 7.46s ± 3% 7.31s ± 3% -2.02% (p=0.000 n=100+99)
Flate 145ms ± 6% 143ms ± 6% -1.11% (p=0.001 n=99+97)
GoParser 177ms ± 5% 176ms ± 5% -0.78% (p=0.018 n=95+95)
Reflect 432ms ± 7% 435ms ± 9% ~ (p=0.296 n=100+100)
Tar 121ms ± 7% 121ms ± 5% ~ (p=0.072 n=100+95)
XML 241ms ± 4% 239ms ± 5% ~ (p=0.085 n=97+99)
[Geo mean] 413ms 410ms -0.73%
name old alloc/op new alloc/op delta
Template 38.4MB ± 0% 37.7MB ± 0% -1.85% (p=0.008 n=5+5)
Unicode 30.1MB ± 0% 28.8MB ± 0% -4.09% (p=0.008 n=5+5)
GoTypes 112MB ± 0% 110MB ± 0% -1.69% (p=0.008 n=5+5)
Compiler 470MB ± 0% 461MB ± 0% -1.91% (p=0.008 n=5+5)
SSA 1.13GB ± 0% 1.11GB ± 0% -1.70% (p=0.008 n=5+5)
Flate 25.0MB ± 0% 24.6MB ± 0% -1.67% (p=0.008 n=5+5)
GoParser 31.6MB ± 0% 31.1MB ± 0% -1.66% (p=0.008 n=5+5)
Reflect 77.1MB ± 0% 75.8MB ± 0% -1.69% (p=0.008 n=5+5)
Tar 26.3MB ± 0% 25.7MB ± 0% -2.06% (p=0.008 n=5+5)
XML 41.9MB ± 0% 41.1MB ± 0% -1.93% (p=0.008 n=5+5)
[Geo mean] 73.5MB 72.0MB -2.03%
name old allocs/op new allocs/op delta
Template 383k ± 0% 383k ± 0% ~ (p=0.690 n=5+5)
Unicode 343k ± 0% 343k ± 0% ~ (p=0.841 n=5+5)
GoTypes 1.16M ± 0% 1.16M ± 0% ~ (p=0.310 n=5+5)
Compiler 4.43M ± 0% 4.42M ± 0% -0.17% (p=0.008 n=5+5)
SSA 9.85M ± 0% 9.85M ± 0% ~ (p=0.310 n=5+5)
Flate 236k ± 0% 236k ± 1% ~ (p=0.841 n=5+5)
GoParser 320k ± 0% 320k ± 0% ~ (p=0.421 n=5+5)
Reflect 988k ± 0% 987k ± 0% ~ (p=0.690 n=5+5)
Tar 252k ± 0% 251k ± 0% ~ (p=0.095 n=5+5)
XML 399k ± 0% 399k ± 0% ~ (p=1.000 n=5+5)
[Geo mean] 741k 740k -0.07%
Change-Id: I9e952b58a98e30a12494304db9ce50d0a85e459c
Reviewed-on: https://go-review.googlesource.com/41797
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Marvin Stenger <marvin.stenger94@gmail.com>
2017-04-26 16:58:33 +00:00
Josh Bleecher Snyder
d286399641
cmd/compile: move Node.Walkdef into flags
...
Node.Walkdef is 0, 1, or 2, so it only requires two bits.
Add support for 2-bit values to bitset,
and use it for Node.Walkdef.
Class, Embedded, Typecheck, and Initorder will follow suit
in subsequent CLs.
The multi-bit flags will go at the beginning,
since that generates (marginally) more efficient code.
Change-Id: Id6e2e66e437f10aaa05b8a6e1652efb327d06128
Reviewed-on: https://go-review.googlesource.com/41791
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-04-26 00:43:48 +00:00
Josh Bleecher Snyder
804784c8ba
cmd/compile: delete bitset16
...
It is no longer used.
Change-Id: Id64f387867a0503d13eaecda12e6606682c24595
Reviewed-on: https://go-review.googlesource.com/41790
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-04-26 00:42:33 +00:00
Matthew Dempsky
870d079c76
cmd/compile/internal/gc: replace Node.Ullman with Node.HasCall
...
Since switching to SSA, the only remaining use for the Ullman field
was in tracking whether or not an expression contained a function
call. Give it a new name and encode it in our fancy new bitset field.
Passes toolstash-check.
Change-Id: I95b7f9cb053856320c0d66efe14996667e6011c2
Reviewed-on: https://go-review.googlesource.com/37721
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
2017-03-03 22:35:44 +00:00
Aliaksandr Valialkin
ed70f37e73
cmd/compile: pack bool fields in Node, Name, Func and Type structs to bitsets
...
This reduces compiler memory usage by up to 4% - see compilebench
results below.
name old time/op new time/op delta
Template 245ms ± 4% 241ms ± 2% -1.88% (p=0.029 n=10+10)
Unicode 126ms ± 3% 124ms ± 3% ~ (p=0.105 n=10+10)
GoTypes 805ms ± 2% 813ms ± 3% ~ (p=0.515 n=8+10)
Compiler 3.95s ± 2% 3.83s ± 1% -2.96% (p=0.000 n=9+10)
MakeBash 47.4s ± 4% 46.6s ± 1% -1.59% (p=0.028 n=9+10)
name old user-ns/op new user-ns/op delta
Template 324M ± 5% 326M ± 3% ~ (p=0.935 n=10+10)
Unicode 186M ± 5% 178M ±10% ~ (p=0.067 n=9+10)
GoTypes 1.08G ± 7% 1.09G ± 4% ~ (p=0.956 n=10+10)
Compiler 5.34G ± 4% 5.31G ± 1% ~ (p=0.501 n=10+8)
name old alloc/op new alloc/op delta
Template 41.0MB ± 0% 39.8MB ± 0% -3.03% (p=0.000 n=10+10)
Unicode 32.3MB ± 0% 31.0MB ± 0% -4.13% (p=0.000 n=10+10)
GoTypes 119MB ± 0% 116MB ± 0% -2.39% (p=0.000 n=10+10)
Compiler 499MB ± 0% 487MB ± 0% -2.48% (p=0.000 n=10+10)
name old allocs/op new allocs/op delta
Template 380k ± 1% 379k ± 1% ~ (p=0.436 n=10+10)
Unicode 324k ± 1% 324k ± 0% ~ (p=0.853 n=10+10)
GoTypes 1.15M ± 0% 1.15M ± 0% ~ (p=0.481 n=10+10)
Compiler 4.41M ± 0% 4.41M ± 0% -0.12% (p=0.007 n=10+10)
name old text-bytes new text-bytes delta
HelloSize 623k ± 0% 623k ± 0% ~ (all equal)
CmdGoSize 6.64M ± 0% 6.64M ± 0% ~ (all equal)
name old data-bytes new data-bytes delta
HelloSize 5.81k ± 0% 5.81k ± 0% ~ (all equal)
CmdGoSize 238k ± 0% 238k ± 0% ~ (all equal)
name old bss-bytes new bss-bytes delta
HelloSize 134k ± 0% 134k ± 0% ~ (all equal)
CmdGoSize 152k ± 0% 152k ± 0% ~ (all equal)
name old exe-bytes new exe-bytes delta
HelloSize 967k ± 0% 967k ± 0% ~ (all equal)
CmdGoSize 10.2M ± 0% 10.2M ± 0% ~ (all equal)
Change-Id: I1f40af738254892bd6c8ba2eb43390b175753d52
Reviewed-on: https://go-review.googlesource.com/37445
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-03-03 21:06:03 +00:00