| // 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))) | |
| } |