| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- // Copyright (c) Tailscale Inc & AUTHORS
- // SPDX-License-Identifier: BSD-3-Clause
- package smallzstd
- import (
- "os"
- "testing"
- "github.com/klauspost/compress/zstd"
- )
- func BenchmarkSmallEncoder(b *testing.B) {
- benchEncoder(b, func() (*zstd.Encoder, error) { return NewEncoder(nil) })
- }
- func BenchmarkSmallEncoderWithBuild(b *testing.B) {
- benchEncoderWithConstruction(b, func() (*zstd.Encoder, error) { return NewEncoder(nil) })
- }
- func BenchmarkStockEncoder(b *testing.B) {
- benchEncoder(b, func() (*zstd.Encoder, error) { return zstd.NewWriter(nil) })
- }
- func BenchmarkStockEncoderWithBuild(b *testing.B) {
- benchEncoderWithConstruction(b, func() (*zstd.Encoder, error) { return zstd.NewWriter(nil) })
- }
- func BenchmarkSmallDecoder(b *testing.B) {
- benchDecoder(b, func() (*zstd.Decoder, error) { return NewDecoder(nil) })
- }
- func BenchmarkSmallDecoderWithBuild(b *testing.B) {
- benchDecoderWithConstruction(b, func() (*zstd.Decoder, error) { return NewDecoder(nil) })
- }
- func BenchmarkStockDecoder(b *testing.B) {
- benchDecoder(b, func() (*zstd.Decoder, error) { return zstd.NewReader(nil) })
- }
- func BenchmarkStockDecoderWithBuild(b *testing.B) {
- benchDecoderWithConstruction(b, func() (*zstd.Decoder, error) { return zstd.NewReader(nil) })
- }
- func benchEncoder(b *testing.B, mk func() (*zstd.Encoder, error)) {
- b.ReportAllocs()
- in := testdata(b)
- out := make([]byte, 0, 10<<10) // 10kiB
- e, err := mk()
- if err != nil {
- b.Fatalf("making encoder: %v", err)
- }
- b.ResetTimer()
- for range b.N {
- e.EncodeAll(in, out)
- }
- }
- func benchEncoderWithConstruction(b *testing.B, mk func() (*zstd.Encoder, error)) {
- b.ReportAllocs()
- in := testdata(b)
- out := make([]byte, 0, 10<<10) // 10kiB
- b.ResetTimer()
- for range b.N {
- e, err := mk()
- if err != nil {
- b.Fatalf("making encoder: %v", err)
- }
- e.EncodeAll(in, out)
- }
- }
- func benchDecoder(b *testing.B, mk func() (*zstd.Decoder, error)) {
- b.ReportAllocs()
- in := compressedTestdata(b)
- out := make([]byte, 0, 10<<10)
- d, err := mk()
- if err != nil {
- b.Fatalf("creating decoder: %v", err)
- }
- b.ResetTimer()
- for range b.N {
- d.DecodeAll(in, out)
- }
- }
- func benchDecoderWithConstruction(b *testing.B, mk func() (*zstd.Decoder, error)) {
- b.ReportAllocs()
- in := compressedTestdata(b)
- out := make([]byte, 0, 10<<10)
- b.ResetTimer()
- for range b.N {
- d, err := mk()
- if err != nil {
- b.Fatalf("creating decoder: %v", err)
- }
- d.DecodeAll(in, out)
- }
- }
- func testdata(b *testing.B) []byte {
- b.Helper()
- in, err := os.ReadFile("testdata")
- if err != nil {
- b.Fatalf("reading testdata: %v", err)
- }
- return in
- }
- func compressedTestdata(b *testing.B) []byte {
- b.Helper()
- uncomp := testdata(b)
- e, err := NewEncoder(nil)
- if err != nil {
- b.Fatalf("creating encoder: %v", err)
- }
- return e.EncodeAll(uncomp, nil)
- }
|