Skip to content

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

@josharian

Description

@josharian

@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%

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions