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