mirror of
https://github.com/golang/go
synced 2024-11-19 13:04:45 -07:00
ea59ebd338
Use the __vdso_clock_gettime fast path via the vDSO on linux/arm64 to speed up nanotime and walltime. This results in the following performance improvement for time.Now on Cavium ThunderX: name old time/op new time/op delta TimeNow 442ns ± 0% 163ns ± 0% -63.16% (p=0.000 n=10+10) And benchmarks on VDSO BenchmarkClockVDSOAndFallbackPaths/vDSO 10000000 166 ns/op BenchmarkClockVDSOAndFallbackPaths/Fallback 3000000 456 ns/op Change-Id: I326118c6dff865eaa0569fc45d1fc1ff95cb74f6 Reviewed-on: https://go-review.googlesource.com/99855 Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
22 lines
669 B
Go
22 lines
669 B
Go
// Copyright 2018 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package runtime
|
|
|
|
const (
|
|
// vdsoArrayMax is the byte-size of a maximally sized array on this architecture.
|
|
// See cmd/compile/internal/arm/galign.go arch.MAXWIDTH initialization, but must also
|
|
// be constrained to max +ve int.
|
|
vdsoArrayMax = 1<<31 - 1
|
|
)
|
|
|
|
var vdsoLinuxVersion = vdsoVersionKey{"LINUX_2.6", 0x3ae75f6}
|
|
|
|
var vdsoSymbolKeys = []vdsoSymbolKey{
|
|
{"__vdso_clock_gettime", 0xd35ec75, 0x6e43a318, &vdsoClockgettimeSym},
|
|
}
|
|
|
|
// initialize to fall back to syscall
|
|
var vdsoClockgettimeSym uintptr = 0
|