github.com/m4gshm/gollections@v0.0.13-0.20240331203319-a34a86e58a24/over/test/api_test.go (about) 1 package test 2 3 import ( 4 "strconv" 5 "testing" 6 7 "github.com/m4gshm/gollections/collection/immutable/ordered/set" 8 "github.com/m4gshm/gollections/loop" 9 "github.com/m4gshm/gollections/slice" 10 "github.com/m4gshm/gollections/slice/range_" 11 ) 12 13 var ( 14 max = 100000 15 values = range_.Closed(1, max) 16 ) 17 18 func Benchmark_OrderedSet_Filter_Convert(b *testing.B) { 19 c := set.Of(values...) 20 21 var s []string 22 23 b.ResetTimer() 24 for i := 0; i < b.N; i++ { 25 s = loop.Convert(c.Filter(func(i int) bool { return i%2 == 0 }), strconv.Itoa).Slice() 26 } 27 b.StopTimer() 28 29 _ = s 30 } 31 32 func Benchmark_Slice_Filter_Convert(b *testing.B) { 33 c := slice.Of(values...) 34 35 var s []string 36 37 b.ResetTimer() 38 for i := 0; i < b.N; i++ { 39 s = slice.Convert(slice.Filter(c, func(i int) bool { return i%2 == 0 }), strconv.Itoa) 40 } 41 b.StopTimer() 42 43 _ = s 44 } 45 46 func Benchmark_Slice_Filter_Convert_plainOld(b *testing.B) { 47 c := values 48 49 var s []string 50 b.ResetTimer() 51 for i := 0; i < b.N; i++ { 52 for _, e := range c { 53 if e%2 == 0 { 54 s = append(s, strconv.Itoa(e)) 55 } 56 } 57 } 58 b.StopTimer() 59 60 _ = s 61 } 62 63 func Benchmark_Slice_Filter_Convert_plainOld2(b *testing.B) { 64 c := values 65 66 var s []string 67 b.ResetTimer() 68 for i := 0; i < b.N; i++ { 69 f := make([]int, 0, len(s)/2) 70 for _, e := range c { 71 if e%2 == 0 { 72 f = append(f, e) 73 } 74 } 75 s = make([]string, len(f)) 76 for i := range f { 77 s[i] = strconv.Itoa(f[i]) 78 } 79 } 80 b.StopTimer() 81 82 _ = s 83 }