• Dmitriy Vyukov's avatar
    runtime: faster select · 6b2ec065
    Dmitriy Vyukov authored
    Make selectsend() accept pointer to the element,
    it makes it possible to make Scase fixed-size
    and allocate/free Select, all Scase's and all SudoG at once.
    As a consequence SudoG freelist die out.
    
    benchmark                       old,ns/op  new,ns/op
    BenchmarkSelectUncontended	     1080        558
    BenchmarkSelectUncontended-2	      675        264
    BenchmarkSelectUncontended-4	      459        205
    BenchmarkSelectContended	     1086        560
    BenchmarkSelectContended-2	     1775       1672
    BenchmarkSelectContended-4	     2668       2149
    (on Intel Q6600, 4 cores, 2.4GHz)
    
    benchmark                       old ns/op    new ns/op    delta
    BenchmarkSelectUncontended         517.00       326.00  -36.94%
    BenchmarkSelectUncontended-2       281.00       166.00  -40.93%
    BenchmarkSelectUncontended-4       250.00        83.10  -66.76%
    BenchmarkSelectUncontended-8       107.00        47.40  -55.70%
    BenchmarkSelectUncontended-16       67.80        41.30  -39.09%
    BenchmarkSelectContended           513.00       325.00  -36.65%
    BenchmarkSelectContended-2         699.00       628.00  -10.16%
    BenchmarkSelectContended-4        1085.00      1092.00   +0.65%
    BenchmarkSelectContended-8        3253.00      2477.00  -23.85%
    BenchmarkSelectContended-16       5313.00      5116.00   -3.71%
    (on Intel E5620, 8 HT cores, 2.4 GHz)
    
    R=rsc, ken
    CC=golang-dev
    https://golang.org/cl/4811041
    6b2ec065
Name
Last commit
Last update
..
data.c Loading commit data...
doc.go Loading commit data...
dwarf.c Loading commit data...
dwarf.h Loading commit data...
dwarf_defs.h Loading commit data...
elf.c Loading commit data...
elf.h Loading commit data...
go.c Loading commit data...
ldelf.c Loading commit data...
ldmacho.c Loading commit data...
ldpe.c Loading commit data...
lib.c Loading commit data...
lib.h Loading commit data...
macho.c Loading commit data...
macho.h Loading commit data...
pe.c Loading commit data...
pe.h Loading commit data...
symtab.c Loading commit data...