github.com/sttk/sabi@v0.5.0/benchmark/notify/benchmark_notify_test.go (about)

     1  package sabi_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/sttk/sabi"
     7  )
     8  
     9  func unused(v any) {}
    10  
    11  func returnOkErr() sabi.Err {
    12  	return sabi.Ok()
    13  }
    14  
    15  func BenchmarkNotify_addErrHandler(b *testing.B) {
    16  	b.StartTimer()
    17  	//sabi.AddSyncErrHandler(func(err sabi.Err, occ sabi.ErrOccasion) {})
    18  	sabi.AddAsyncErrHandler(func(err sabi.Err, occ sabi.ErrOccasion) {})
    19  	sabi.FixErrCfgs()
    20  	b.StopTimer()
    21  }
    22  
    23  func BenchmarkNotify_ok(b *testing.B) {
    24  	var err sabi.Err
    25  	b.StartTimer()
    26  	for i := 0; i < b.N; i++ {
    27  		e := returnOkErr()
    28  		err = e
    29  	}
    30  	b.StopTimer()
    31  	unused(err)
    32  }
    33  
    34  type EmptyReason struct {
    35  }
    36  
    37  func returnEmptyReasonedErr() sabi.Err {
    38  	return sabi.NewErr(EmptyReason{})
    39  }
    40  
    41  func BenchmarkNotify_emptyReason(b *testing.B) {
    42  	var err sabi.Err
    43  	b.StartTimer()
    44  	for i := 0; i < b.N; i++ {
    45  		e := returnEmptyReasonedErr()
    46  		err = e
    47  	}
    48  	b.StopTimer()
    49  	unused(err)
    50  }
    51  
    52  type OneFieldReason struct {
    53  	FieldA string
    54  }
    55  
    56  func returnOneFieldReasonedErr() sabi.Err {
    57  	return sabi.NewErr(OneFieldReason{FieldA: "abc"})
    58  }
    59  
    60  func BenchmarkNotify_oneFieldReason(b *testing.B) {
    61  	var err sabi.Err
    62  	b.StartTimer()
    63  	for i := 0; i < b.N; i++ {
    64  		e := returnOneFieldReasonedErr()
    65  		err = e
    66  	}
    67  	b.StopTimer()
    68  	unused(err)
    69  }
    70  
    71  type FiveFieldReason struct {
    72  	FieldA string
    73  	FieldB int
    74  	FieldC bool
    75  	FieldD string
    76  	FieldE string
    77  }
    78  
    79  func returnFiveFieldReasonedErr() sabi.Err {
    80  	return sabi.NewErr(FiveFieldReason{
    81  		FieldA: "abc", FieldB: 123, FieldC: true, FieldD: "def", FieldE: "ghi",
    82  	})
    83  }
    84  
    85  func BenchmarkNotify_fiveFieldReason(b *testing.B) {
    86  	var err sabi.Err
    87  	b.StartTimer()
    88  	for i := 0; i < b.N; i++ {
    89  		e := returnFiveFieldReasonedErr()
    90  		err = e
    91  	}
    92  	b.StopTimer()
    93  	unused(err)
    94  }
    95  
    96  type EmptyError struct {
    97  }
    98  
    99  func (e EmptyError) Error() string {
   100  	return "EmptyError"
   101  }
   102  
   103  type HavingCauseError struct {
   104  	Cause error
   105  }
   106  
   107  func (e HavingCauseError) Error() string {
   108  	return "HavingCauseError{cause:" + e.Cause.Error() + "}"
   109  }
   110  
   111  func returnHavingCauseReasonedErr() sabi.Err {
   112  	return sabi.NewErr(HavingCauseError{}, EmptyError{})
   113  }
   114  
   115  func BenchmarkNotify_havingCauseReason(b *testing.B) {
   116  	var err sabi.Err
   117  	b.StartTimer()
   118  	for i := 0; i < b.N; i++ {
   119  		e := returnHavingCauseReasonedErr()
   120  		err = e
   121  	}
   122  	b.StopTimer()
   123  	unused(err)
   124  }