• Josh Bleecher Snyder's avatar
    os: allocate buffer lazily in Expand · 86181120
    Josh Bleecher Snyder authored
    As an example of why this might happen,
    consider this code from cmd/internal/objfile:
    
    // Expand literal "$GOROOT" rewritten by obj.AbsFile()
    filename = filepath.Clean(os.ExpandEnv(filename))
    
    In this case, filename might not contain "$GOROOT",
    in which case we can skip the buffer entirely.
    
    name               old time/op    new time/op    delta
    Expand/noop-8        46.7ns ± 1%    12.9ns ± 1%   -72.47%  (p=0.000 n=9+9)
    Expand/multiple-8     139ns ± 1%     137ns ± 1%    -1.36%  (p=0.001 n=10+10)
    
    The Expand/multiple improvement is probably noise.
    
    This speeds up cmd/objdump detectably, if not much.
    Using "benchcmd ObjdumpCompile go tool objdump `go tool -n compile`":
    
    name            old time/op       new time/op       delta
    ObjdumpCompile        9.35s ± 2%        9.07s ± 3%  -3.00%  (p=0.000 n=18+18)
    
    Updates #24725
    
    Change-Id: Id31ec6a9b8dfb3c0f1db58fe1f958e11c39e656c
    Reviewed-on: https://go-review.googlesource.com/106697
    Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
    86181120
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...