Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cmd/compile: optimize new-and-improved prove pass #25179

Closed
josharian opened this issue Apr 30, 2018 · 3 comments

Comments

Projects
None yet
3 participants
@josharian
Copy link
Contributor

commented Apr 30, 2018

@rasky recently made significant improvements in the prove pass. It is, however, a bit more expensive now. This issue is to check whether there are any reasonably simple toolspeed improvements to be made this cycle. Marking as Go 1.11, in the expectation that any changes made here will be fairly safe and done early in the freeze. If there aren't any such fixes, this issue can be closed.

Benchmarks for the span of commits from 5af0b28 to e0d37a3:

name        old time/op       new time/op       delta
Template          167ms ± 3%        168ms ± 2%  +0.66%  (p=0.000 n=92+96)
Unicode          85.0ms ± 4%       84.8ms ± 4%    ~     (p=0.519 n=97+96)
GoTypes           537ms ± 2%        543ms ± 2%  +1.06%  (p=0.000 n=94+92)
Compiler          2.51s ± 4%        2.56s ± 3%  +1.64%  (p=0.000 n=96+98)
SSA               6.15s ± 3%        6.35s ± 2%  +3.22%  (p=0.000 n=96+98)
Flate             112ms ± 4%        113ms ± 3%  +1.08%  (p=0.000 n=96+96)
GoParser          133ms ± 4%        134ms ± 3%  +0.97%  (p=0.000 n=96+99)
Reflect           350ms ± 5%        355ms ± 4%  +1.40%  (p=0.000 n=96+95)
Tar               151ms ± 3%        152ms ± 5%  +0.55%  (p=0.023 n=98+99)
XML               191ms ± 3%        194ms ± 4%  +1.67%  (p=0.000 n=94+97)
[Geo mean]        335ms             339ms       +1.20%

name        old user-time/op  new user-time/op  delta
Template          207ms ± 3%        208ms ± 3%  +0.37%  (p=0.014 n=95+97)
Unicode           108ms ± 5%        108ms ± 5%    ~     (p=0.557 n=98+93)
GoTypes           724ms ± 2%        728ms ± 2%  +0.47%  (p=0.000 n=96+93)
Compiler          3.37s ± 6%        3.52s ± 5%  +4.35%  (p=0.000 n=99+90)
SSA               8.70s ± 4%        8.94s ± 4%  +2.78%  (p=0.000 n=98+91)
Flate             133ms ± 4%        135ms ± 4%  +1.05%  (p=0.000 n=100+96)
GoParser          154ms ± 3%        155ms ± 4%  +0.68%  (p=0.001 n=98+98)
Reflect           445ms ± 8%        462ms ± 3%  +4.02%  (p=0.000 n=100+90)
Tar               189ms ± 4%        191ms ± 4%  +0.98%  (p=0.000 n=97+97)
XML               229ms ± 4%        235ms ± 7%  +2.44%  (p=0.000 n=94+92)
[Geo mean]        424ms             431ms       +1.73%

name        old alloc/op      new alloc/op      delta
Template         34.4MB ± 0%       35.0MB ± 0%  +1.87%  (p=0.008 n=5+5)
Unicode          29.3MB ± 0%       29.3MB ± 0%  +0.20%  (p=0.008 n=5+5)
GoTypes           113MB ± 0%        115MB ± 0%  +1.61%  (p=0.008 n=5+5)
Compiler          508MB ± 0%        519MB ± 0%  +2.00%  (p=0.008 n=5+5)
SSA              1.49GB ± 0%       1.55GB ± 0%  +3.98%  (p=0.008 n=5+5)
Flate            23.7MB ± 0%       24.2MB ± 0%  +2.04%  (p=0.008 n=5+5)
GoParser         27.8MB ± 0%       28.2MB ± 0%  +1.24%  (p=0.008 n=5+5)
Reflect          77.0MB ± 0%       78.8MB ± 0%  +2.29%  (p=0.008 n=5+5)
Tar              33.9MB ± 0%       34.5MB ± 0%  +1.57%  (p=0.008 n=5+5)
XML              42.5MB ± 0%       43.3MB ± 0%  +1.78%  (p=0.008 n=5+5)
[Geo mean]       75.9MB            77.3MB       +1.85%

name        old allocs/op     new allocs/op     delta
Template           320k ± 0%         330k ± 0%  +3.03%  (p=0.008 n=5+5)
Unicode            336k ± 0%         337k ± 0%  +0.25%  (p=0.008 n=5+5)
GoTypes           1.12M ± 0%        1.15M ± 0%  +2.14%  (p=0.008 n=5+5)
Compiler          4.65M ± 0%        4.77M ± 0%  +2.43%  (p=0.008 n=5+5)
SSA               11.9M ± 0%        12.5M ± 0%  +5.22%  (p=0.008 n=5+5)
Flate              214k ± 0%         221k ± 0%  +3.18%  (p=0.008 n=5+5)
GoParser           270k ± 0%         275k ± 0%  +1.91%  (p=0.008 n=5+5)
Reflect            920k ± 0%         944k ± 0%  +2.56%  (p=0.008 n=5+5)
Tar                316k ± 0%         323k ± 0%  +2.33%  (p=0.008 n=5+5)
XML                375k ± 0%         384k ± 0%  +2.54%  (p=0.008 n=5+5)
[Geo mean]         728k              747k       +2.55%

@josharian josharian added the ToolSpeed label Apr 30, 2018

@josharian josharian added this to the Go1.11 milestone Apr 30, 2018

@gopherbot

This comment has been minimized.

Copy link

commented Apr 30, 2018

Change https://golang.org/cl/110455 mentions this issue: cmd/compile: reduce allocations in poset

josharian added a commit to josharian/go that referenced this issue May 8, 2018

cmd/compile: reduce allocations in poset
DO NOT SUBMIT

Need better benchmarks; allocation count regression is
down from 5% to 3% after this CL.

Updates golang#25179

Change-Id: I6d14003109833d9b3ef5165fdea00aa9c9e952e8

gopherbot pushed a commit that referenced this issue May 14, 2018

cmd/compile: reduce allocations in prove by reusing posets
In prove, reuse posets between different functions by storing them
in the per-worker cache.

Allocation count regression caused by prove improvements is down
from 5% to 3% after this CL.

Updates #25179

Change-Id: I6d14003109833d9b3ef5165fdea00aa9c9e952e8
Reviewed-on: https://go-review.googlesource.com/110455
Run-TryBot: Giovanni Bajo <rasky@develer.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
@dr2chase

This comment has been minimized.

Copy link
Contributor

commented Jun 15, 2018

Any reason not to close this, or else to change the milestone to 1.12?

@josharian

This comment has been minimized.

Copy link
Contributor Author

commented Jun 16, 2018

I think we got the low hanging fruit.

@josharian josharian closed this Jun 16, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.