| // Copyright 2021 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 reflectdata_test | |
| import ( | |
| "testing" | |
| ) | |
| func BenchmarkEqArrayOfStrings5(b *testing.B) { | |
| var a [5]string | |
| var c [5]string | |
| for i := 0; i < 5; i++ { | |
| a[i] = "aaaa" | |
| c[i] = "cccc" | |
| } | |
| for j := 0; j < b.N; j++ { | |
| _ = a == c | |
| } | |
| } | |
| func BenchmarkEqArrayOfStrings64(b *testing.B) { | |
| var a [64]string | |
| var c [64]string | |
| for i := 0; i < 64; i++ { | |
| a[i] = "aaaa" | |
| c[i] = "cccc" | |
| } | |
| for j := 0; j < b.N; j++ { | |
| _ = a == c | |
| } | |
| } | |
| func BenchmarkEqArrayOfStrings1024(b *testing.B) { | |
| var a [1024]string | |
| var c [1024]string | |
| for i := 0; i < 1024; i++ { | |
| a[i] = "aaaa" | |
| c[i] = "cccc" | |
| } | |
| for j := 0; j < b.N; j++ { | |
| _ = a == c | |
| } | |
| } | |
| func BenchmarkEqArrayOfFloats5(b *testing.B) { | |
| var a [5]float32 | |
| var c [5]float32 | |
| for i := 0; i < b.N; i++ { | |
| _ = a == c | |
| } | |
| } | |
| func BenchmarkEqArrayOfFloats64(b *testing.B) { | |
| var a [64]float32 | |
| var c [64]float32 | |
| for i := 0; i < b.N; i++ { | |
| _ = a == c | |
| } | |
| } | |
| func BenchmarkEqArrayOfFloats1024(b *testing.B) { | |
| var a [1024]float32 | |
| var c [1024]float32 | |
| for i := 0; i < b.N; i++ { | |
| _ = a == c | |
| } | |
| } | |
| func BenchmarkEqArrayOfStructsEq(b *testing.B) { | |
| type T2 struct { | |
| a string | |
| b int | |
| } | |
| const size = 1024 | |
| var ( | |
| str1 = "foobar" | |
| a [size]T2 | |
| c [size]T2 | |
| ) | |
| for i := 0; i < size; i++ { | |
| a[i].a = str1 | |
| c[i].a = str1 | |
| } | |
| b.ResetTimer() | |
| for j := 0; j < b.N; j++ { | |
| _ = a == c | |
| } | |
| } | |
| func BenchmarkEqArrayOfStructsNotEq(b *testing.B) { | |
| type T2 struct { | |
| a string | |
| b int | |
| } | |
| const size = 1024 | |
| var ( | |
| str1 = "foobar" | |
| str2 = "foobarz" | |
| a [size]T2 | |
| c [size]T2 | |
| ) | |
| for i := 0; i < size; i++ { | |
| a[i].a = str1 | |
| c[i].a = str1 | |
| } | |
| c[len(c)-1].a = str2 | |
| b.ResetTimer() | |
| for j := 0; j < b.N; j++ { | |
| _ = a == c | |
| } | |
| } | |
| const size = 16 | |
| type T1 struct { | |
| a [size]byte | |
| } | |
| func BenchmarkEqStruct(b *testing.B) { | |
| x, y := T1{}, T1{} | |
| x.a = [size]byte{1, 2, 3, 4, 5, 6, 7, 8} | |
| y.a = [size]byte{2, 3, 4, 5, 6, 7, 8, 9} | |
| for i := 0; i < b.N; i++ { | |
| f := x == y | |
| if f { | |
| println("hello") | |
| } | |
| } | |
| } |