mirror of
https://github.com/golang/go
synced 2024-10-04 20:11:22 -06:00
3d5daa2319
(amd64) benchmark old ns/op new ns/op delta BenchmarkEqual0 16 6 -63.15% BenchmarkEqual9 22 7 -65.37% BenchmarkEqual32 36 9 -74.91% BenchmarkEqual4K 2187 120 -94.51% benchmark old MB/s new MB/s speedup BenchmarkEqual9 392.22 1134.38 2.89x BenchmarkEqual32 866.72 3457.39 3.99x BenchmarkEqual4K 1872.73 33998.87 18.15x (386) benchmark old ns/op new ns/op delta BenchmarkEqual0 16 5 -63.85% BenchmarkEqual9 22 7 -67.84% BenchmarkEqual32 34 12 -64.94% BenchmarkEqual4K 2196 113 -94.85% benchmark old MB/s new MB/s speedup BenchmarkEqual9 405.81 1260.18 3.11x BenchmarkEqual32 919.55 2631.21 2.86x BenchmarkEqual4K 1864.85 36072.54 19.34x Update #3751 R=bradfitz, r, khr, dave, remyoudompheng, fullung, minux.ma, ality CC=golang-dev https://golang.org/cl/8056043
78 lines
1.5 KiB
Go
78 lines
1.5 KiB
Go
// Copyright 2012 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_test
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func BenchmarkCompareStringEqual(b *testing.B) {
|
|
bytes := []byte("Hello Gophers!")
|
|
s1, s2 := string(bytes), string(bytes)
|
|
for i := 0; i < b.N; i++ {
|
|
if s1 != s2 {
|
|
b.Fatal("s1 != s2")
|
|
}
|
|
}
|
|
}
|
|
|
|
func BenchmarkCompareStringIdentical(b *testing.B) {
|
|
s1 := "Hello Gophers!"
|
|
s2 := s1
|
|
for i := 0; i < b.N; i++ {
|
|
if s1 != s2 {
|
|
b.Fatal("s1 != s2")
|
|
}
|
|
}
|
|
}
|
|
|
|
func BenchmarkCompareStringSameLength(b *testing.B) {
|
|
s1 := "Hello Gophers!"
|
|
s2 := "Hello, Gophers"
|
|
for i := 0; i < b.N; i++ {
|
|
if s1 == s2 {
|
|
b.Fatal("s1 == s2")
|
|
}
|
|
}
|
|
}
|
|
|
|
func BenchmarkCompareStringDifferentLength(b *testing.B) {
|
|
s1 := "Hello Gophers!"
|
|
s2 := "Hello, Gophers!"
|
|
for i := 0; i < b.N; i++ {
|
|
if s1 == s2 {
|
|
b.Fatal("s1 == s2")
|
|
}
|
|
}
|
|
}
|
|
|
|
func BenchmarkCompareStringBigUnaligned(b *testing.B) {
|
|
bytes := make([]byte, 0, 1<<20)
|
|
for len(bytes) < 1<<20 {
|
|
bytes = append(bytes, "Hello Gophers!"...)
|
|
}
|
|
s1, s2 := string(bytes), "hello"+string(bytes)
|
|
for i := 0; i < b.N; i++ {
|
|
if s1 != s2[len("hello"):] {
|
|
b.Fatal("s1 != s2")
|
|
}
|
|
}
|
|
b.SetBytes(int64(len(s1)))
|
|
}
|
|
|
|
func BenchmarkCompareStringBig(b *testing.B) {
|
|
bytes := make([]byte, 0, 1<<20)
|
|
for len(bytes) < 1<<20 {
|
|
bytes = append(bytes, "Hello Gophers!"...)
|
|
}
|
|
s1, s2 := string(bytes), string(bytes)
|
|
for i := 0; i < b.N; i++ {
|
|
if s1 != s2 {
|
|
b.Fatal("s1 != s2")
|
|
}
|
|
}
|
|
b.SetBytes(int64(len(s1)))
|
|
}
|