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