1
2
3
4
5 package test
6
7 import (
8 "fmt"
9 "testing"
10 )
11
12 var globl int64
13 var globl32 int32
14
15 func BenchmarkLoadAdd(b *testing.B) {
16 x := make([]int64, 1024)
17 y := make([]int64, 1024)
18 for i := 0; i < b.N; i++ {
19 var s int64
20 for i := range x {
21 s ^= x[i] + y[i]
22 }
23 globl = s
24 }
25 }
26
27
28 func BenchmarkExtShift(b *testing.B) {
29 x := make([]int32, 1024)
30 for i := 0; i < b.N; i++ {
31 var s int64
32 for i := range x {
33 s ^= int64(x[i]+32) * 8
34 }
35 globl = s
36 }
37 }
38
39 func BenchmarkModify(b *testing.B) {
40 a := make([]int64, 1024)
41 v := globl
42 for i := 0; i < b.N; i++ {
43 for j := range a {
44 a[j] += v
45 }
46 }
47 }
48
49 func BenchmarkMullImm(b *testing.B) {
50 x := make([]int32, 1024)
51 for i := 0; i < b.N; i++ {
52 var s int32
53 for i := range x {
54 s += x[i] * 100
55 }
56 globl32 = s
57 }
58 }
59
60 func BenchmarkConstModify(b *testing.B) {
61 a := make([]int64, 1024)
62 for i := 0; i < b.N; i++ {
63 for j := range a {
64 a[j] += 3
65 }
66 }
67 }
68
69 func BenchmarkBitSet(b *testing.B) {
70 const N = 64 * 8
71 a := make([]uint64, N/64)
72 for i := 0; i < b.N; i++ {
73 for j := uint64(0); j < N; j++ {
74 a[j/64] |= 1 << (j % 64)
75 }
76 }
77 }
78
79 func BenchmarkBitClear(b *testing.B) {
80 const N = 64 * 8
81 a := make([]uint64, N/64)
82 for i := 0; i < b.N; i++ {
83 for j := uint64(0); j < N; j++ {
84 a[j/64] &^= 1 << (j % 64)
85 }
86 }
87 }
88
89 func BenchmarkBitToggle(b *testing.B) {
90 const N = 64 * 8
91 a := make([]uint64, N/64)
92 for i := 0; i < b.N; i++ {
93 for j := uint64(0); j < N; j++ {
94 a[j/64] ^= 1 << (j % 64)
95 }
96 }
97 }
98
99 func BenchmarkBitSetConst(b *testing.B) {
100 const N = 64
101 a := make([]uint64, N)
102 for i := 0; i < b.N; i++ {
103 for j := range a {
104 a[j] |= 1 << 37
105 }
106 }
107 }
108
109 func BenchmarkBitClearConst(b *testing.B) {
110 const N = 64
111 a := make([]uint64, N)
112 for i := 0; i < b.N; i++ {
113 for j := range a {
114 a[j] &^= 1 << 37
115 }
116 }
117 }
118
119 func BenchmarkBitToggleConst(b *testing.B) {
120 const N = 64
121 a := make([]uint64, N)
122 for i := 0; i < b.N; i++ {
123 for j := range a {
124 a[j] ^= 1 << 37
125 }
126 }
127 }
128
129 func BenchmarkMulNeg(b *testing.B) {
130 x := make([]int64, 1024)
131 for i := 0; i < b.N; i++ {
132 var s int64
133 for i := range x {
134 s = (-x[i]) * 11
135 }
136 globl = s
137 }
138 }
139
140 func BenchmarkMul2Neg(b *testing.B) {
141 x := make([]int64, 1024)
142 y := make([]int64, 1024)
143 for i := 0; i < b.N; i++ {
144 var s int64
145 for i := range x {
146 s = (-x[i]) * (-y[i])
147 }
148 globl = s
149 }
150 }
151
152 func BenchmarkSimplifyNegMul(b *testing.B) {
153 x := make([]int64, 1024)
154 y := make([]int64, 1024)
155 b.ResetTimer()
156 for i := 0; i < b.N; i++ {
157 var s int64
158 for i := range x {
159 s = -(-x[i] * y[i])
160 }
161 globl = s
162 }
163 }
164
165 func BenchmarkSimplifyNegDiv(b *testing.B) {
166 x := make([]int64, 1024)
167 y := make([]int64, 1024)
168 for i := range y {
169 y[i] = 42
170 }
171 b.ResetTimer()
172 for i := 0; i < b.N; i++ {
173 var s int64
174 for i := range x {
175 s = -(-x[i] / y[i])
176 }
177 globl = s
178 }
179 }
180
181 var globbool bool
182
183
184
185
186 func containsRight(strs []string, str string) bool {
187 for i := range strs {
188 if strs[i] == str {
189 return true
190 }
191 }
192 return false
193 }
194
195
196
197
198 func containsLeft(strs []string, str string) bool {
199 for i := range strs {
200 if str == strs[i] {
201 return true
202 }
203 }
204 return false
205 }
206
207
208
209 func BenchmarkStringEqParamOrder(b *testing.B) {
210 strs := []string{
211 "12312312", "abcsdsfw", "abcdefgh", "qereqwre",
212 "gwertdsg", "hellowod", "iamgroot", "theiswer",
213 "dg323sdf", "gadsewwe", "g42dg4t3", "4hre2323",
214 "23eg4325", "13234234", "32dfgsdg", "23fgre34",
215 "43rerrer", "hh2s2443", "hhwesded", "1swdf23d",
216 "gwcdrwer", "bfgwertd", "badgwe3g", "lhoejyop",
217 }
218 target := fmt.Sprintf("%s", "notfound")
219 b.Run("ParamRight", func(b *testing.B) {
220 for b.Loop() {
221 globbool = containsRight(strs, target)
222 }
223 })
224 b.Run("ParamLeft", func(b *testing.B) {
225 for b.Loop() {
226 globbool = containsLeft(strs, target)
227 }
228 })
229 }
230
View as plain text