diff options
author | Dmitry Vyukov <dvyukov@google.com> | 2018-10-31 17:42:15 +0100 |
---|---|---|
committer | Dmitry Vyukov <dvyukov@google.com> | 2018-11-02 12:52:30 +0000 |
commit | ff51353c3887b9d83130d958fb503ff1f2291fde (patch) | |
tree | 17b372ebaa7ea60d8a6d24542d8cc1c3c7cd3d6f /src/runtime/time.go | |
parent | fc3f8d43f1b7da3ee3fb9a5181f2a86841620273 (diff) | |
download | go-ff51353c3887b9d83130d958fb503ff1f2291fde.tar.gz go-ff51353c3887b9d83130d958fb503ff1f2291fde.zip |
runtime: move nanotime wrappers to time and poll packages
The nanotime wrappers in runtime introduce a bunch
of unnecessary code onto hot paths, e.g.:
0000000000449d70 <time.runtimeNano>:
449d70: 64 48 8b 0c 25 f8 ff mov %fs:0xfffffffffffffff8,%rcx
449d77: ff ff
449d79: 48 3b 61 10 cmp 0x10(%rcx),%rsp
449d7d: 76 26 jbe 449da5 <time.runtimeNano+0x35>
449d7f: 48 83 ec 10 sub $0x10,%rsp
449d83: 48 89 6c 24 08 mov %rbp,0x8(%rsp)
449d88: 48 8d 6c 24 08 lea 0x8(%rsp),%rbp
449d8d: e8 ae 18 01 00 callq 45b640 <runtime.nanotime>
449d92: 48 8b 04 24 mov (%rsp),%rax
449d96: 48 89 44 24 18 mov %rax,0x18(%rsp)
449d9b: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp
449da0: 48 83 c4 10 add $0x10,%rsp
449da4: c3 retq
449da5: e8 56 e0 00 00 callq 457e00 <runtime.morestack_noctxt>
449daa: eb c4 jmp 449d70 <time.runtimeNano>
Move them to the corresponding packages which eliminates all of this.
name old time/op new time/op delta
TCP4OneShotTimeout-6 17.1µs ± 1% 17.0µs ± 0% -0.66% (p=0.032 n=5+5)
SetReadDeadline-6 234ns ± 1% 232ns ± 0% -0.77% (p=0.016 n=5+4)
Update #25729
Change-Id: Iee05027adcdc289ba895c5f5a37f154e451bc862
Reviewed-on: https://go-review.googlesource.com/c/146342
Run-TryBot: Dmitry Vyukov <dvyukov@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src/runtime/time.go')
-rw-r--r-- | src/runtime/time.go | 12 |
1 files changed, 0 insertions, 12 deletions
diff --git a/src/runtime/time.go b/src/runtime/time.go index b345ed4e02..28a4722866 100644 --- a/src/runtime/time.go +++ b/src/runtime/time.go @@ -458,15 +458,3 @@ func siftdownTimer(t []*timer, i int) bool { func badTimer() { panic(errorString("racy use of timers")) } - -// Entry points for net, time to call nanotime. - -//go:linkname poll_runtimeNano internal/poll.runtimeNano -func poll_runtimeNano() int64 { - return nanotime() -} - -//go:linkname time_runtimeNano time.runtimeNano -func time_runtimeNano() int64 { - return nanotime() -} |