1// +build use_easyjson 2 3package benchmark 4 5import ( 6 "testing" 7 8 "github.com/mailru/easyjson" 9 "github.com/mailru/easyjson/jwriter" 10) 11 12func BenchmarkEJ_Unmarshal_M(b *testing.B) { 13 b.SetBytes(int64(len(largeStructText))) 14 for i := 0; i < b.N; i++ { 15 var s LargeStruct 16 err := s.UnmarshalJSON(largeStructText) 17 if err != nil { 18 b.Error(err) 19 } 20 } 21} 22 23func BenchmarkEJ_Unmarshal_S(b *testing.B) { 24 b.SetBytes(int64(len(smallStructText))) 25 26 for i := 0; i < b.N; i++ { 27 var s Entities 28 err := s.UnmarshalJSON(smallStructText) 29 if err != nil { 30 b.Error(err) 31 } 32 } 33} 34 35func BenchmarkEJ_Marshal_M(b *testing.B) { 36 var l int64 37 for i := 0; i < b.N; i++ { 38 data, err := easyjson.Marshal(&largeStructData) 39 if err != nil { 40 b.Error(err) 41 } 42 l = int64(len(data)) 43 } 44 b.SetBytes(l) 45} 46 47func BenchmarkEJ_Marshal_L(b *testing.B) { 48 var l int64 49 for i := 0; i < b.N; i++ { 50 data, err := easyjson.Marshal(&xlStructData) 51 if err != nil { 52 b.Error(err) 53 } 54 l = int64(len(data)) 55 } 56 b.SetBytes(l) 57} 58 59func BenchmarkEJ_Marshal_L_ToWriter(b *testing.B) { 60 var l int64 61 out := &DummyWriter{} 62 for i := 0; i < b.N; i++ { 63 w := jwriter.Writer{} 64 xlStructData.MarshalEasyJSON(&w) 65 if w.Error != nil { 66 b.Error(w.Error) 67 } 68 69 l = int64(w.Size()) 70 w.DumpTo(out) 71 } 72 b.SetBytes(l) 73 74} 75func BenchmarkEJ_Marshal_M_Parallel(b *testing.B) { 76 b.SetBytes(int64(len(largeStructText))) 77 78 b.RunParallel(func(pb *testing.PB) { 79 for pb.Next() { 80 _, err := largeStructData.MarshalJSON() 81 if err != nil { 82 b.Error(err) 83 } 84 } 85 }) 86} 87 88func BenchmarkEJ_Marshal_M_ToWriter(b *testing.B) { 89 var l int64 90 out := &DummyWriter{} 91 for i := 0; i < b.N; i++ { 92 w := jwriter.Writer{} 93 largeStructData.MarshalEasyJSON(&w) 94 if w.Error != nil { 95 b.Error(w.Error) 96 } 97 98 l = int64(w.Size()) 99 w.DumpTo(out) 100 } 101 b.SetBytes(l) 102 103} 104func BenchmarkEJ_Marshal_M_ToWriter_Parallel(b *testing.B) { 105 out := &DummyWriter{} 106 107 b.RunParallel(func(pb *testing.PB) { 108 var l int64 109 for pb.Next() { 110 w := jwriter.Writer{} 111 largeStructData.MarshalEasyJSON(&w) 112 if w.Error != nil { 113 b.Error(w.Error) 114 } 115 116 l = int64(w.Size()) 117 w.DumpTo(out) 118 } 119 if l > 0 { 120 b.SetBytes(l) 121 } 122 }) 123 124} 125 126func BenchmarkEJ_Marshal_L_Parallel(b *testing.B) { 127 var l int64 128 b.RunParallel(func(pb *testing.PB) { 129 for pb.Next() { 130 data, err := xlStructData.MarshalJSON() 131 if err != nil { 132 b.Error(err) 133 } 134 l = int64(len(data)) 135 } 136 }) 137 b.SetBytes(l) 138} 139 140func BenchmarkEJ_Marshal_L_ToWriter_Parallel(b *testing.B) { 141 out := &DummyWriter{} 142 b.RunParallel(func(pb *testing.PB) { 143 var l int64 144 for pb.Next() { 145 w := jwriter.Writer{} 146 147 xlStructData.MarshalEasyJSON(&w) 148 if w.Error != nil { 149 b.Error(w.Error) 150 } 151 l = int64(w.Size()) 152 w.DumpTo(out) 153 } 154 if l > 0 { 155 b.SetBytes(l) 156 } 157 }) 158} 159 160func BenchmarkEJ_Marshal_S(b *testing.B) { 161 var l int64 162 for i := 0; i < b.N; i++ { 163 data, err := smallStructData.MarshalJSON() 164 if err != nil { 165 b.Error(err) 166 } 167 l = int64(len(data)) 168 } 169 b.SetBytes(l) 170} 171 172func BenchmarkEJ_Marshal_S_Parallel(b *testing.B) { 173 var l int64 174 b.RunParallel(func(pb *testing.PB) { 175 for pb.Next() { 176 data, err := smallStructData.MarshalJSON() 177 if err != nil { 178 b.Error(err) 179 } 180 l = int64(len(data)) 181 } 182 }) 183 b.SetBytes(l) 184} 185