compression

package
v0.28.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 16, 2026 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var QualityNames = map[int]string{
	0:  "None (fastest)",
	1:  "Fast",
	2:  "Fast",
	3:  "Balanced",
	4:  "Balanced",
	5:  "Balanced",
	6:  "Good",
	7:  "Good",
	8:  "Best",
	9:  "Best",
	10: "Maximum",
	11: "Maximum (slowest)",
}

Quality names for display

Functions

func EstimateCompressedSize

func EstimateCompressedSize(data []byte, quality int) int

EstimateCompressedSize estimates the compressed size without actually compressing This is a rough estimate based on content type

func GetBuffer

func GetBuffer() *bytes.Buffer

GetBuffer gets a buffer from the pool

func GetQualityName

func GetQualityName(quality int) string

GetQualityName returns human-readable quality name

func IsBrotliCompressed

func IsBrotliCompressed(data []byte) bool

IsBrotliCompressed checks if data appears to be Brotli compressed Brotli doesn't have a standard magic number, but we can check some heuristics

func PutBuffer

func PutBuffer(buf *bytes.Buffer)

PutBuffer returns a buffer to the pool

Types

type BrotliCompressor

type BrotliCompressor struct {
	// contains filtered or unexported fields
}

BrotliCompressor provides Brotli compression/decompression Brotli offers 2-4x better compression than gzip for text content and up to 82x for repetitive content (logs, structured data)

func NewBrotliCompressor

func NewBrotliCompressor() *BrotliCompressor

NewBrotliCompressor creates a new Brotli compressor with default settings

func NewBrotliCompressorWithConfig

func NewBrotliCompressorWithConfig(cfg BrotliConfig) *BrotliCompressor

NewBrotliCompressorWithConfig creates a compressor with custom config

func (*BrotliCompressor) Compress

func (bc *BrotliCompressor) Compress(data []byte) ([]byte, error)

Compress compresses data using Brotli Returns compressed data and nil error on success

func (*BrotliCompressor) CompressStream

func (bc *BrotliCompressor) CompressStream(reader io.Reader, writer io.Writer) error

CompressStream compresses data using streaming (for large content)

func (*BrotliCompressor) CompressWithMetadata

func (bc *BrotliCompressor) CompressWithMetadata(data []byte) (*CompressionResult, error)

CompressWithMetadata compresses and returns metadata

func (*BrotliCompressor) Decompress

func (bc *BrotliCompressor) Decompress(data []byte) ([]byte, error)

Decompress decompresses Brotli-compressed data

func (*BrotliCompressor) DecompressStream

func (bc *BrotliCompressor) DecompressStream(reader io.Reader, writer io.Writer) error

DecompressStream decompresses using streaming

type BrotliConfig

type BrotliConfig struct {
	// Quality is the compression level (0-11)
	// 0 = no compression, 11 = best compression (slow)
	// Default: 4 (good balance)
	Quality int

	// LGWin is the LZ77 window size
	// 10-24, where 24 = 16MB window
	// Default: 22 (4MB window)
	LGWin int

	// MinSize is the minimum content size to compress
	// Content smaller than this won't be compressed
	// Default: 100 bytes
	MinSize int

	// MaxSize is the maximum content size for single-pass compression
	// Larger content will use streaming
	// Default: 100MB
	MaxSize int
}

BrotliConfig holds configuration for Brotli compression

func DefaultBrotliConfig

func DefaultBrotliConfig() BrotliConfig

DefaultBrotliConfig returns default Brotli configuration

type BrotliFilter

type BrotliFilter struct {
	// contains filtered or unexported fields
}

BrotliFilter implements the filter.Layer interface for Brotli compression

func NewBrotliFilter

func NewBrotliFilter() *BrotliFilter

NewBrotliFilter creates a new Brotli filter

func NewBrotliFilterWithConfig

func NewBrotliFilterWithConfig(cfg BrotliConfig) *BrotliFilter

NewBrotliFilterWithConfig creates a filter with custom config

func (*BrotliFilter) Apply

func (bf *BrotliFilter) Apply(input string, mode int) (string, int)

Apply compresses input using Brotli Note: This is used for storage compression, not pipeline filtering

func (*BrotliFilter) Name

func (bf *BrotliFilter) Name() string

Name returns the filter name

type CompareResult

type CompareResult struct {
	OriginalData []byte                  `json:"-"`
	Algorithms   []CompressionComparison `json:"algorithms"`
	Winner       string                  `json:"winner"`
	BestRatio    float64                 `json:"best_ratio"`
}

CompareResult holds the full comparison

func CompareAlgorithms

func CompareAlgorithms(data []byte) (*CompareResult, error)

CompareAlgorithms compares multiple compression algorithms

func (*CompareResult) PrintComparison

func (cr *CompareResult) PrintComparison() string

PrintComparison prints a formatted comparison table

type CompressionComparison

type CompressionComparison struct {
	Algorithm        string        `json:"algorithm"`
	OriginalSize     int           `json:"original_size"`
	CompressedSize   int           `json:"compressed_size"`
	CompressionRatio float64       `json:"compression_ratio"`
	SpaceSaved       int           `json:"space_saved"`
	Percentage       float64       `json:"percentage"`
	Duration         time.Duration `json:"duration"`
	Speed            float64       `json:"speed_mbps"`
}

CompressionComparison holds comparison results between different algorithms

type CompressionResult

type CompressionResult struct {
	Algorithm        string  `json:"algorithm"`
	OriginalSize     int     `json:"original_size"`
	CompressedSize   int     `json:"compressed_size"`
	CompressionRatio float64 `json:"compression_ratio"`
	SpaceSaved       int     `json:"space_saved"`
	WasCompressed    bool    `json:"was_compressed"`
	Data             []byte  `json:"-"`
}

CompressionResult holds compression results

func (*CompressionResult) Percentage

func (cr *CompressionResult) Percentage() float64

Percentage returns space saved as percentage

func (*CompressionResult) Summary

func (cr *CompressionResult) Summary() string

Summary returns a human-readable summary

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL