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 }