• 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
doc Loading commit data...
include Loading commit data...
lib Loading commit data...
misc Loading commit data...
src Loading commit data...
test Loading commit data...
.hgignore Loading commit data...
.hgtags Loading commit data...
AUTHORS Loading commit data...
CONTRIBUTORS Loading commit data...
LICENSE Loading commit data...
PATENTS Loading commit data...
README Loading commit data...
favicon.ico Loading commit data...
robots.txt Loading commit data...