mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
runtime: use unaligned loads on ppc64
benchmark old ns/op new ns/op delta BenchmarkAlignedLoad-160 8.67 7.42 -14.42% BenchmarkUnalignedLoad-160 8.63 7.37 -14.60% Change-Id: Id4609d7b4038c4d2ec332efc4fe6f1adfb61b82b Reviewed-on: https://go-review.googlesource.com/20812 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
982322769c
commit
15ea61146e
4 changed files with 27 additions and 2 deletions
|
|
@ -193,3 +193,6 @@ func SetTracebackEnv(level string) {
|
||||||
setTraceback(level)
|
setTraceback(level)
|
||||||
traceback_env = traceback_cache
|
traceback_env = traceback_cache
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var ReadUnaligned32 = readUnaligned32
|
||||||
|
var ReadUnaligned64 = readUnaligned64
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ import (
|
||||||
. "runtime"
|
. "runtime"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
"unsafe"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Smhasher is a torture test for hash functions.
|
// Smhasher is a torture test for hash functions.
|
||||||
|
|
@ -658,3 +659,24 @@ func TestStructHash(t *testing.T) {
|
||||||
t.Errorf("too many allocs %f - hash not balanced", n)
|
t.Errorf("too many allocs %f - hash not balanced", n)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var sink uint64
|
||||||
|
|
||||||
|
func BenchmarkAlignedLoad(b *testing.B) {
|
||||||
|
var buf [16]byte
|
||||||
|
p := unsafe.Pointer(&buf[0])
|
||||||
|
var s uint64
|
||||||
|
for i := 0; i < b.N; i++ {
|
||||||
|
s += ReadUnaligned64(p)
|
||||||
|
}
|
||||||
|
sink = s
|
||||||
|
}
|
||||||
|
func BenchmarkUnalignedLoad(b *testing.B) {
|
||||||
|
var buf [16]byte
|
||||||
|
p := unsafe.Pointer(&buf[1])
|
||||||
|
var s uint64
|
||||||
|
for i := 0; i < b.N; i++ {
|
||||||
|
s += ReadUnaligned64(p)
|
||||||
|
}
|
||||||
|
sink = s
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build 386 amd64 amd64p32 arm64
|
// +build 386 amd64 amd64p32 arm64 ppc64 ppc64le
|
||||||
|
|
||||||
package runtime
|
package runtime
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build arm ppc64 ppc64le mips64 mips64le
|
// +build arm mips64 mips64le
|
||||||
|
|
||||||
package runtime
|
package runtime
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue