• Rémy Oudompheng's avatar
    cmd/gc: inline copy in frontend to call memmove directly. · ff416a3f
    Rémy Oudompheng authored
    A new node type OSPTR is added to refer to the data pointer of
    strings and slices in a simple way during walk(). It will be
    useful for future work on simplification of slice arithmetic.
    
    benchmark                  old ns/op    new ns/op    delta
    BenchmarkCopy1Byte                 9            8  -13.98%
    BenchmarkCopy2Byte                14            8  -40.49%
    BenchmarkCopy4Byte                13            8  -35.04%
    BenchmarkCopy8Byte                13            8  -37.10%
    BenchmarkCopy12Byte               14           12  -15.38%
    BenchmarkCopy16Byte               14           12  -17.24%
    BenchmarkCopy32Byte               19           14  -27.32%
    BenchmarkCopy128Byte              31           26  -15.29%
    BenchmarkCopy1024Byte            100           92   -7.50%
    BenchmarkCopy1String              10            7  -28.99%
    BenchmarkCopy2String              10            7  -28.06%
    BenchmarkCopy4String              10            8  -22.69%
    BenchmarkCopy8String              10            8  -23.30%
    BenchmarkCopy12String             11           11   -5.88%
    BenchmarkCopy16String             11           11   -5.08%
    BenchmarkCopy32String             15           14   -6.58%
    BenchmarkCopy128String            28           25  -10.60%
    BenchmarkCopy1024String           95           95   +0.53%
    
    R=golang-dev, bradfitz, cshapiro, dave, daniel.morsing, rsc, khr, khr
    CC=golang-dev
    https://golang.org/cl/9101048
    ff416a3f
Name
Last commit
Last update
..
cmd Loading commit data...
lib9 Loading commit data...
libbio Loading commit data...
libmach Loading commit data...
pkg Loading commit data...
Make.dist Loading commit data...
all.bash Loading commit data...
all.bat Loading commit data...
all.rc Loading commit data...
clean.bash Loading commit data...
clean.bat Loading commit data...
clean.rc Loading commit data...
make.bash Loading commit data...
make.bat Loading commit data...
make.rc Loading commit data...
race.bash Loading commit data...
race.bat Loading commit data...
run.bash Loading commit data...
run.bat Loading commit data...
run.rc Loading commit data...
sudo.bash Loading commit data...