• Josh Bleecher Snyder's avatar
    cmd/internal/src: cache prefixed filenames · 57e03861
    Josh Bleecher Snyder authored
    CL 37234 introduced string concatenation into some hot code. 
    This CL does that work earlier and caches the result.
    
    Updates #19386
    
    Performance impact vs master:
    
    name       old time/op      new time/op      delta
    Template        223ms ± 5%       216ms ± 5%   -2.98%  (p=0.001 n=20+20)
    Unicode        98.7ms ± 4%      99.0ms ± 4%     ~     (p=0.749 n=20+19)
    GoTypes         631ms ± 4%       626ms ± 4%     ~     (p=0.253 n=20+20)
    Compiler        2.91s ± 1%       2.87s ± 3%   -1.11%  (p=0.005 n=18+20)
    SSA             4.48s ± 2%       4.36s ± 2%   -2.77%  (p=0.000 n=20+20)
    Flate           130ms ± 2%       129ms ± 6%     ~     (p=0.428 n=19+20)
    GoParser        160ms ± 4%       157ms ± 3%   -1.62%  (p=0.005 n=20+18)
    Reflect         395ms ± 2%       394ms ± 4%     ~     (p=0.445 n=20+20)
    Tar             120ms ± 5%       118ms ± 6%     ~     (p=0.101 n=19+20)
    XML             224ms ± 3%       223ms ± 3%     ~     (p=0.544 n=19+19)
    
    name       old user-ns/op   new user-ns/op   delta
    Template   291user-ms ± 5%  265user-ms ± 5%   -9.02%  (p=0.000 n=20+19)
    Unicode    140user-ms ± 3%  139user-ms ± 8%     ~     (p=0.904 n=20+20)
    GoTypes    844user-ms ± 3%  849user-ms ± 3%     ~     (p=0.251 n=20+18)
    Compiler   4.06user-s ± 5%  3.98user-s ± 2%     ~     (p=0.056 n=20+20)
    SSA        6.89user-s ± 5%  6.50user-s ± 3%   -5.61%  (p=0.000 n=20+20)
    Flate      164user-ms ± 5%  163user-ms ± 4%     ~     (p=0.365 n=20+19)
    GoParser   206user-ms ± 6%  204user-ms ± 4%     ~     (p=0.534 n=20+18)
    Reflect    501user-ms ± 4%  505user-ms ± 5%     ~     (p=0.383 n=20+20)
    Tar        151user-ms ± 3%  152user-ms ± 7%     ~     (p=0.798 n=17+20)
    XML        283user-ms ± 7%  280user-ms ± 5%     ~     (p=0.301 n=20+20)
    
    name       old alloc/op     new alloc/op     delta
    Template       42.5MB ± 0%      40.2MB ± 0%   -5.59%  (p=0.000 n=20+20)
    Unicode        31.7MB ± 0%      31.0MB ± 0%   -2.19%  (p=0.000 n=20+18)
    GoTypes         124MB ± 0%       117MB ± 0%   -5.90%  (p=0.000 n=20+20)
    Compiler        533MB ± 0%       490MB ± 0%   -8.07%  (p=0.000 n=20+20)
    SSA             989MB ± 0%       893MB ± 0%   -9.74%  (p=0.000 n=20+20)
    Flate          27.8MB ± 0%      26.1MB ± 0%   -5.92%  (p=0.000 n=20+20)
    GoParser       34.3MB ± 0%      32.1MB ± 0%   -6.43%  (p=0.000 n=19+20)
    Reflect        84.6MB ± 0%      81.4MB ± 0%   -3.84%  (p=0.000 n=20+20)
    Tar            28.8MB ± 0%      27.7MB ± 0%   -3.89%  (p=0.000 n=20+20)
    XML            47.2MB ± 0%      44.2MB ± 0%   -6.45%  (p=0.000 n=20+19)
    
    name       old allocs/op    new allocs/op    delta
    Template         420k ± 1%        381k ± 1%   -9.35%  (p=0.000 n=20+20)
    Unicode          338k ± 1%        324k ± 1%   -4.29%  (p=0.000 n=20+19)
    GoTypes         1.28M ± 0%       1.15M ± 0%  -10.30%  (p=0.000 n=20+20)
    Compiler        5.06M ± 0%       4.41M ± 0%  -12.92%  (p=0.000 n=20+20)
    SSA             9.14M ± 0%       7.91M ± 0%  -13.46%  (p=0.000 n=19+20)
    Flate            267k ± 0%        241k ± 1%   -9.53%  (p=0.000 n=20+20)
    GoParser         347k ± 1%        312k ± 0%  -10.15%  (p=0.000 n=19+20)
    Reflect         1.07M ± 0%       1.00M ± 0%   -6.86%  (p=0.000 n=20+20)
    Tar              274k ± 1%        256k ± 1%   -6.73%  (p=0.000 n=20+20)
    XML              448k ± 0%        398k ± 0%  -11.17%  (p=0.000 n=20+18)
    
    
    Performance impact when applied together with CL 37234
    atop CL 37234's parent commit (i.e. as if it were
    a part of CL 37234), to show that this commit
    makes CL 37234 completely performance-neutral:
    
    name       old time/op      new time/op      delta
    Template        222ms ±14%       222ms ±14%    ~     (p=1.000 n=14+15)
    Unicode         104ms ±18%       106ms ±18%    ~     (p=0.650 n=13+14)
    GoTypes         653ms ± 7%       638ms ± 5%    ~     (p=0.145 n=14+12)
    Compiler        3.10s ± 1%       3.13s ±10%    ~     (p=1.000 n=2+2)
    SSA             4.73s ±11%       4.68s ±11%    ~     (p=0.567 n=15+15)
    Flate           136ms ± 4%       133ms ± 7%    ~     (p=0.231 n=12+14)
    GoParser        163ms ±11%       169ms ±10%    ~     (p=0.352 n=14+14)
    Reflect         415ms ±15%       423ms ±20%    ~     (p=0.715 n=15+14)
    Tar             133ms ±17%       130ms ±23%    ~     (p=0.252 n=14+15)
    XML             236ms ±16%       235ms ±14%    ~     (p=0.874 n=14+14)
    
    name       old user-ns/op   new user-ns/op   delta
    Template   271user-ms ±10%  271user-ms ±10%    ~     (p=0.780 n=14+15)
    Unicode    143user-ms ± 5%  146user-ms ±11%    ~     (p=0.432 n=12+14)
    GoTypes    864user-ms ± 5%  866user-ms ± 9%    ~     (p=0.905 n=14+13)
    Compiler   4.17user-s ± 1%  4.26user-s ± 7%    ~     (p=1.000 n=2+2)
    SSA        6.79user-s ± 8%  6.79user-s ± 6%    ~     (p=0.902 n=15+15)
    Flate      169user-ms ± 8%  164user-ms ± 5%  -3.13%  (p=0.014 n=14+14)
    GoParser   212user-ms ± 7%  217user-ms ±22%    ~     (p=1.000 n=13+15)
    Reflect    521user-ms ± 7%  533user-ms ±15%    ~     (p=0.511 n=14+14)
    Tar        165user-ms ±17%  161user-ms ±15%    ~     (p=0.345 n=15+15)
    XML        294user-ms ±11%  292user-ms ±10%    ~     (p=0.839 n=14+14)
    
    name       old alloc/op     new alloc/op     delta
    Template       39.9MB ± 0%      39.9MB ± 0%    ~     (p=0.621 n=15+14)
    Unicode        31.0MB ± 0%      31.0MB ± 0%    ~     (p=0.098 n=13+15)
    GoTypes         117MB ± 0%       117MB ± 0%    ~     (p=0.775 n=15+15)
    Compiler        488MB ± 0%       488MB ± 0%    ~     (p=0.333 n=2+2)
    SSA             892MB ± 0%       892MB ± 0%  +0.03%  (p=0.000 n=15+15)
    Flate          26.1MB ± 0%      26.1MB ± 0%    ~     (p=0.098 n=15+15)
    GoParser       31.8MB ± 0%      31.8MB ± 0%    ~     (p=0.525 n=15+13)
    Reflect        81.2MB ± 0%      81.2MB ± 0%  +0.06%  (p=0.001 n=12+14)
    Tar            27.5MB ± 0%      27.5MB ± 0%    ~     (p=0.595 n=15+15)
    XML            44.1MB ± 0%      44.1MB ± 0%    ~     (p=0.486 n=15+15)
    
    name       old allocs/op    new allocs/op    delta
    Template         378k ± 1%        378k ± 0%    ~     (p=0.949 n=15+14)
    Unicode          324k ± 0%        324k ± 1%    ~     (p=0.057 n=14+15)
    GoTypes         1.15M ± 0%       1.15M ± 0%    ~     (p=0.461 n=15+15)
    Compiler        4.39M ± 0%       4.39M ± 0%    ~     (p=0.333 n=2+2)
    SSA             7.90M ± 0%       7.90M ± 0%  +0.06%  (p=0.008 n=15+15)
    Flate            240k ± 1%        241k ± 0%    ~     (p=0.233 n=15+15)
    GoParser         309k ± 1%        309k ± 0%    ~     (p=0.867 n=15+12)
    Reflect         1.00M ± 0%       1.00M ± 0%    ~     (p=0.139 n=12+15)
    Tar              254k ± 1%        253k ± 1%    ~     (p=0.345 n=15+15)
    XML              398k ± 0%        397k ± 1%    ~     (p=0.267 n=15+15)
    
    
    Change-Id: Ic999a0f456a371c99eebba0f9747263a13836e33
    Reviewed-on: https://go-review.googlesource.com/37766
    Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
    57e03861
Name
Last commit
Last update
.github Loading commit data...
api Loading commit data...
doc Loading commit data...
lib/time Loading commit data...
misc Loading commit data...
src Loading commit data...
test Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
AUTHORS Loading commit data...
CONTRIBUTING.md Loading commit data...
CONTRIBUTORS Loading commit data...
LICENSE Loading commit data...
PATENTS Loading commit data...
README.md Loading commit data...
favicon.ico Loading commit data...
robots.txt Loading commit data...