Descriptiontime: make Timer scalable
With this change, time.Timer is backed by userspace heaps with
single runtimeTimer per heap. Heaps number is multiply of
GOMAXPROCS and changed dinamically.
Ticker is not changed and still uses runtimeTimer, cause I assume
that it is strange to have many thousangs of ticker. Without ticker,
heap code could be simplified a bit, and no need to store interval in
Timer.
benchmark old ns/op new ns/op delta
BenchmarkAfterFunc 6593 1016 -84.59%
BenchmarkAfterFunc-2 4039 702 -82.62%
BenchmarkAfterFunc-3 5851 545 -90.69%
BenchmarkAfterFunc-4 8694 469 -94.61%
BenchmarkAfter 6969 1064 -84.73%
BenchmarkAfter-2 3837 728 -81.03%
BenchmarkAfter-3 5853 545 -90.69%
BenchmarkAfter-4 8796 553 -93.71%
BenchmarkStop 498 554 +11.24%
BenchmarkStop-2 566 375 -33.75%
BenchmarkStop-3 676 289 -57.25%
BenchmarkStop-4 759 250 -67.06%
BenchmarkSimultaneousAfterFunc 603 585 -2.99%
BenchmarkSimultaneousAfterFunc-2 640 383 -40.16%
BenchmarkSimultaneousAfterFunc-3 789 296 -62.48%
BenchmarkSimultaneousAfterFunc-4 741 284 -61.67%
BenchmarkStartStop 236 229 -2.97%
BenchmarkStartStop-2 210 284 +35.24%
BenchmarkStartStop-3 275 198 -28.00%
BenchmarkStartStop-4 302 170 -43.71%
BenchmarkTicker 59182 59199 +0.03%
BenchmarkTicker-2 61678 61479 -0.32%
BenchmarkTicker-3 61712 61855 +0.23%
BenchmarkTicker-4 61761 61825 +0.10%
Fixes issue 6239.
Patch Set 1 #Patch Set 2 : diff -r 2f13cc5d7043 https://code.google.com/p/go #Patch Set 3 : diff -r 2f13cc5d7043 https://code.google.com/p/go #
MessagesTotal messages: 11
|