]> Cypherpunks repositories - gostls13.git/commit
runtime: don't wake timeproc needlessly
authorDmitry Vyukov <dvyukov@google.com>
Wed, 31 Oct 2018 10:31:31 +0000 (11:31 +0100)
committerDmitry Vyukov <dvyukov@google.com>
Fri, 2 Nov 2018 12:48:03 +0000 (12:48 +0000)
commita9280fa2de5b9dc13f75dd3aebdf4a218fca451e
tree8d3176d68134c618a96abfa3a0b53233b22590f5
parent7f9984535995fc90556bd18d73b43b4bad744c99
runtime: don't wake timeproc needlessly

It's not always necessary to wake timerproc even if we add
a new timer to the top of the heap. Since we don't wake and
reset timerproc when we remove timers, it still can be sleeping
with shorter timeout. It such case it's more profitable to let it
sleep and then update timeout when it wakes on its own rather than
proactively wake it, let it update timeout and go to sleep again.

name                  old time/op  new time/op  delta
TCP4OneShotTimeout-6  18.6µs ± 1%  17.2µs ± 0%   -7.66%  (p=0.008 n=5+5)
SetReadDeadline-6      562ns ± 5%   319ns ± 1%  -43.27%  (p=0.008 n=5+5)

Update #25729

Change-Id: Iec8eacb8563dbc574a82358b3bac7ac479c16826
Reviewed-on: https://go-review.googlesource.com/c/146337
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/net/tcpsock_test.go
src/runtime/time.go