...

Source file src/github.com/thoas/go-funk/benchmark_test.go

Documentation: github.com/thoas/go-funk

     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