]> Cypherpunks repositories - gostls13.git/commit
runtime: avoid runtimeNano call on a common netpoll path
authorDmitry Vyukov <dvyukov@google.com>
Wed, 31 Oct 2018 14:07:57 +0000 (15:07 +0100)
committerDmitry Vyukov <dvyukov@google.com>
Fri, 2 Nov 2018 12:55:58 +0000 (12:55 +0000)
commit21f7f01289577698eb70a4558d588bd00b6fed01
treeca780455c513dfbac664842a73dd2873fe0327de
parent31e7842f3d3f85f7aec5ca72f59befce9f58a3b6
runtime: avoid runtimeNano call on a common netpoll path

runtimeNano is slower than nanotime, so pass the duration
to runtime_pollSetDeadline as is. netpoll can add nanotime itself.
Arguably a bit simpler because, say, a negative duration
clearly represents already expired timer, no need to compare to
nanotime again.
This may also fix an obscure corner case when a deadline in past
which happens to be nanotime 0 is confused with no deadline at all,
which are radically different things.
Also don't compute any durations and times if Time is zero
(currently we first compute everything and then reset d back to 0,
which is wasteful).

name                  old time/op  new time/op  delta
TCP4OneShotTimeout-6  17.1µs ± 0%  17.0µs ± 0%     ~     (p=0.421 n=5+5)
SetReadDeadline-6      230ns ± 0%   205ns ± 1%  -10.63%  (p=0.008 n=5+5)

Change-Id: I2aad699270289a5b9ead68f5e44ec4ec6d96baa0
Reviewed-on: https://go-review.googlesource.com/c/146344
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Dmitry Vyukov <dvyukov@google.com>
src/internal/poll/fd_poll_runtime.go
src/runtime/netpoll.go