• Kyle Consalus's avatar
    runtime: special case copy, equal for one-word interface values · 4d903504
    Kyle Consalus authored
    Based on the observation that a great number of the types that
    are copied or compared in interfaces, maps, and channels are
    word-sized, this uses specialized copy and equality functions
    for them that use a word instead of 4 or 8 bytes. Seems to yield
    0-6% improvements in performance in the benchmarks I've run.
    For example, with the regexp benchmarks:
    
    Before:
    regexp.BenchmarkLiteral   500000       3.26 µs/op
    regexp.BenchmarkNotLiteral    100000      13.67 µs/op
    regexp.BenchmarkMatchClass    100000      18.72 µs/op
    regexp.BenchmarkMatchClass_InRange    100000      20.04 µs/op
    regexp.BenchmarkReplaceAll    100000      27.85 µs/op
    
    After:
    regexp.BenchmarkLiteral   500000       3.11 µs/op
    regexp.BenchmarkNotLiteral    200000      13.29 µs/op
    regexp.BenchmarkMatchClass    100000      17.65 µs/op
    regexp.BenchmarkMatchClass_InRange    100000      18.49 µs/op
    regexp.BenchmarkReplaceAll    100000      26.34 µs/op
    
    R=rsc
    CC=golang-dev
    https://golang.org/cl/1967047
    4d903504
Name
Last commit
Last update
..
5a Loading commit data...
5c Loading commit data...
5g Loading commit data...
5l Loading commit data...
6a Loading commit data...
6c Loading commit data...
6g Loading commit data...
6l Loading commit data...
8a Loading commit data...
8c Loading commit data...
8g Loading commit data...
8l Loading commit data...
cc Loading commit data...
cgo Loading commit data...
cov Loading commit data...
ebnflint Loading commit data...
gc Loading commit data...
godefs Loading commit data...
godoc Loading commit data...
gofmt Loading commit data...
goinstall Loading commit data...
gomake Loading commit data...
gopack Loading commit data...
gotest Loading commit data...
goyacc Loading commit data...
hgpatch Loading commit data...
ld Loading commit data...
nm Loading commit data...
prof Loading commit data...
clean.bash Loading commit data...
make.bash Loading commit data...