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  }