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