...
1 package funk
2
3 import (
4 "math/rand"
5 "testing"
6 )
7
8 const (
9 seed = 918234565
10 sliceSize = 3614562
11 )
12
13 func sliceGenerator(size uint, r *rand.Rand) (out []int64) {
14 for i := uint(0); i < size; i++ {
15 out = append(out, rand.Int63())
16 }
17 return
18 }
19
20 func BenchmarkSubtract(b *testing.B) {
21 r := rand.New(rand.NewSource(seed))
22 testData := sliceGenerator(sliceSize, r)
23 what := sliceGenerator(sliceSize, r)
24
25 b.Run("Subtract", func(b *testing.B) {
26 for n := 0; n < b.N; n++ {
27 Subtract(testData, what)
28 }
29 })
30 }
31
32 func BenchmarkContains(b *testing.B) {
33 r := rand.New(rand.NewSource(seed))
34 testData := sliceGenerator(sliceSize, r)
35 what := r.Int63()
36
37 b.Run("ContainsInt64", func(b *testing.B) {
38 for n := 0; n < b.N; n++ {
39 ContainsInt64(testData, what)
40 }
41 })
42
43 b.Run("IndexOfInt64", func(b *testing.B) {
44 for n := 0; n < b.N; n++ {
45 IndexOfInt64(testData, what)
46 }
47 })
48
49 b.Run("Contains", func(b *testing.B) {
50 for n := 0; n < b.N; n++ {
51 Contains(testData, what)
52 }
53 })
54 }
55
56 func BenchmarkUniq(b *testing.B) {
57 r := rand.New(rand.NewSource(seed))
58 testData := sliceGenerator(sliceSize, r)
59
60 b.Run("UniqInt64", func(b *testing.B) {
61 for n := 0; n < b.N; n++ {
62 UniqInt64(testData)
63 }
64 })
65
66 b.Run("Uniq", func(b *testing.B) {
67 for n := 0; n < b.N; n++ {
68 Uniq(testData)
69 }
70 })
71 }
72
73 func BenchmarkSum(b *testing.B) {
74 r := rand.New(rand.NewSource(seed))
75 testData := sliceGenerator(sliceSize, r)
76
77 b.Run("SumInt64", func(b *testing.B) {
78 for n := 0; n < b.N; n++ {
79 SumInt64(testData)
80 }
81 })
82
83 b.Run("Sum", func(b *testing.B) {
84 for n := 0; n < b.N; n++ {
85 Sum(testData)
86 }
87 })
88 }
89
90 func BenchmarkDrop(b *testing.B) {
91 r := rand.New(rand.NewSource(seed))
92 testData := sliceGenerator(sliceSize, r)
93
94 b.Run("DropInt64", func(b *testing.B) {
95 for n := 0; n < b.N; n++ {
96 DropInt64(testData, 1)
97 }
98 })
99
100 b.Run("Drop", func(b *testing.B) {
101 for n := 0; n < b.N; n++ {
102 Drop(testData, 1)
103 }
104 })
105 }
106
107 func BenchmarkJoin(b *testing.B) {
108 r := rand.New(rand.NewSource(seed))
109 fullArr := sliceGenerator(sliceSize, r)
110 leftArr := fullArr[:sliceSize/3*2]
111 rightArr := fullArr[sliceSize/3*1:]
112
113 b.Run("InnerJoinInt64", func(b *testing.B) {
114 for n := 0; n < b.N; n++ {
115 JoinInt64(leftArr, rightArr, InnerJoinInt64)
116 }
117 })
118
119 b.Run("InnerJoin", func(b *testing.B) {
120 for n := 0; n < b.N; n++ {
121 Join(leftArr, rightArr, InnerJoin)
122 }
123 })
124 }
125
View as plain text