MCPcopy
hub / github.com/segmentio/kafka-go / benchmarkCompression

Function benchmarkCompression

compress/compress_test.go:381–442  ·  view source on GitHub ↗
(b *testing.B, codec pkg.Codec, buf *bytes.Buffer, payload []byte)

Source from the content-addressed store, hash-verified

379}
380
381func benchmarkCompression(b *testing.B, codec pkg.Codec, buf *bytes.Buffer, payload []byte) float64 {
382 // In case only the decompression benchmark are run, we use this flags to
383 // detect whether we have to compress the payload before the decompression
384 // benchmarks.
385 compressed := false
386
387 b.Run("compress", func(b *testing.B) {
388 compressed = true
389 r := bytes.NewReader(payload)
390 b.ReportAllocs()
391
392 for i := 0; i < b.N; i++ {
393 buf.Reset()
394 r.Reset(payload)
395 w := codec.NewWriter(buf)
396
397 _, err := io.Copy(w, r)
398 if err != nil {
399 b.Fatal(err)
400 }
401 if err := w.Close(); err != nil {
402 b.Fatal(err)
403 }
404 }
405
406 b.SetBytes(int64(buf.Len()))
407 })
408
409 if !compressed {
410 r := bytes.NewReader(payload)
411 w := codec.NewWriter(buf)
412
413 _, err := io.Copy(w, r)
414 if err != nil {
415 b.Fatal(err)
416 }
417 if err := w.Close(); err != nil {
418 b.Fatal(err)
419 }
420 }
421
422 b.Run("decompress", func(b *testing.B) {
423 c := bytes.NewReader(buf.Bytes())
424 b.ReportAllocs()
425 for i := 0; i < b.N; i++ {
426 c.Reset(buf.Bytes())
427 r := codec.NewReader(c)
428
429 n, err := io.Copy(ioutil.Discard, r)
430 if err != nil {
431 b.Fatal(err)
432 }
433 if err := r.Close(); err != nil {
434 b.Fatal(err)
435 }
436
437 b.SetBytes(n)
438 }

Callers

nothing calls this directly

Calls 7

CloseMethod · 0.95
CloseMethod · 0.95
NewReaderMethod · 0.65
NewWriterMethod · 0.65
LenMethod · 0.65
BytesMethod · 0.65
ResetMethod · 0.45

Tested by

no test coverage detected