MCPcopy
hub / github.com/tinylib/msgp / BenchmarkExtensionReadWrite

Function BenchmarkExtensionReadWrite

msgp/extension_test.go:155–205  ·  view source on GitHub ↗
(b *testing.B)

Source from the content-addressed store, hash-verified

153}
154
155func BenchmarkExtensionReadWrite(b *testing.B) {
156 var buf bytes.Buffer
157 en := NewWriter(&buf)
158 dc := NewReader(&buf)
159
160 b.Run("interface", func(b *testing.B) {
161 b.ReportAllocs()
162
163 for i := 0; i < b.N; i++ {
164 buf.Reset()
165
166 e := randomExt()
167 err := en.WriteExtension(&e)
168 if err != nil {
169 b.Errorf("error writing extension: %s", err)
170 }
171 en.Flush()
172
173 err = dc.ReadExtension(&e)
174 if err != nil {
175 b.Errorf("error reading extension: %s", err)
176 }
177 }
178 })
179
180 b.Run("raw", func(b *testing.B) {
181 // this should have zero allocations
182 b.ReportAllocs()
183
184 for i := 0; i < b.N; i++ {
185 buf.Reset()
186
187 e := randomExt()
188 err := en.WriteExtensionRaw(e.Type, e.Data)
189 if err != nil {
190 b.Errorf("error writing extension: %s", err)
191 }
192 en.Flush()
193
194 typ, payload, err := dc.ReadExtensionRaw()
195 if err != nil {
196 b.Errorf("error reading extension: %s", err)
197 }
198 if typ != e.Type || !bytes.Equal(payload, e.Data) {
199 b.Errorf("extension mismatch: %d %x != %d %x", typ, payload, e.Type, e.Data)
200 }
201
202 buf.Reset()
203 }
204 })
205}

Callers

nothing calls this directly

Calls 10

WriteExtensionMethod · 0.95
FlushMethod · 0.95
ReadExtensionMethod · 0.95
WriteExtensionRawMethod · 0.95
ReadExtensionRawMethod · 0.95
NewWriterFunction · 0.85
NewReaderFunction · 0.85
randomExtFunction · 0.85
ResetMethod · 0.45
EqualMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…