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
Closed

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

josharian opened this issue Apr 30, 2018 · 3 comments

Comments

@josharian
Copy link
Contributor

@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 this to the Go1.11 milestone Apr 30, 2018
@gopherbot
Copy link

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

josharian pushed a commit to josharian/go that referenced this issue May 8, 2018
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
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
Copy link
Contributor

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

@josharian
Copy link
Contributor Author

I think we got the low hanging fruit.

@golang golang locked and limited conversation to collaborators Jun 16, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants