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