Class: Omnizip::Algorithms::Zstandard
- Inherits:
-
Omnizip::Algorithm
- Object
- Omnizip::Algorithm
- Omnizip::Algorithms::Zstandard
- Defined in:
- lib/omnizip/algorithms/zstandard.rb,
lib/omnizip/algorithms/zstandard/fse.rb,
lib/omnizip/algorithms/zstandard/frame.rb,
lib/omnizip/algorithms/zstandard/decoder.rb,
lib/omnizip/algorithms/zstandard/encoder.rb,
lib/omnizip/algorithms/zstandard/huffman.rb,
lib/omnizip/algorithms/zstandard/literals.rb,
lib/omnizip/algorithms/zstandard/constants.rb,
lib/omnizip/algorithms/zstandard/fse/table.rb,
lib/omnizip/algorithms/zstandard/sequences.rb,
lib/omnizip/algorithms/zstandard/frame/block.rb,
lib/omnizip/algorithms/zstandard/fse/encoder.rb,
lib/omnizip/algorithms/zstandard/frame/header.rb,
lib/omnizip/algorithms/zstandard/fse/bitstream.rb,
lib/omnizip/algorithms/zstandard/huffman_encoder.rb,
lib/omnizip/algorithms/zstandard/literals_encoder.rb
Overview
Zstandard compression algorithm
Zstandard (or Zstd) is a fast lossless compression algorithm developed by Facebook (now Meta). It provides:
- Excellent compression ratios comparable to zlib/deflate
- Very fast compression and decompression speeds
- Wide range of compression levels (1-22)
- Dictionary support for small data compression
- Streaming and frame modes
This implementation uses the zstd-ruby gem which provides Ruby bindings to the official Zstandard C library. This ensures compatibility with the reference implementation and excellent performance.
Zstandard is particularly effective for:
- Real-time compression needs
- Network protocol compression
- Database compression
- Log file compression
- General-purpose compression with speed priority
Defined Under Namespace
Modules: Constants, FSE, Frame Classes: Decoder, Encoder, Huffman, HuffmanEncoder, HuffmanTableReader, LiteralsDecoder, LiteralsEncoder, SequenceExecutor, SequencesDecoder
Instance Attribute Summary
Attributes inherited from Omnizip::Algorithm
Class Method Summary collapse
-
.metadata ⇒ AlgorithmMetadata
Get algorithm metadata.
Instance Method Summary collapse
-
#compress(input_stream, output_stream, options = nil) ⇒ void
Compress data using Zstandard algorithm.
-
#decompress(input_stream, output_stream, _options = nil) ⇒ void
Decompress Zstandard-compressed data.
Methods inherited from Omnizip::Algorithm
inherited, #initialize, #with_filter
Constructor Details
This class inherits a constructor from Omnizip::Algorithm
Class Method Details
.metadata ⇒ AlgorithmMetadata
Get algorithm metadata
71 72 73 74 75 76 77 78 |
# File 'lib/omnizip/algorithms/zstandard.rb', line 71 def self. Models::AlgorithmMetadata.new.tap do || .name = "zstandard" .description = "Zstandard fast compression with " \ "excellent ratios" .version = "1.0.0" end end |
Instance Method Details
#compress(input_stream, output_stream, options = nil) ⇒ void
This method returns an undefined value.
Compress data using Zstandard algorithm
86 87 88 89 90 |
# File 'lib/omnizip/algorithms/zstandard.rb', line 86 def compress(input_stream, output_stream, = nil) input_data = input_stream.read encoder = Encoder.new(output_stream, ()) encoder.encode_stream(input_data) end |
#decompress(input_stream, output_stream, _options = nil) ⇒ void
This method returns an undefined value.
Decompress Zstandard-compressed data
98 99 100 101 102 103 104 105 |
# File 'lib/omnizip/algorithms/zstandard.rb', line 98 def decompress(input_stream, output_stream, = nil) if output_stream.respond_to?(:set_encoding) output_stream.set_encoding(Encoding::BINARY) end decoder = Decoder.new(input_stream) decompressed = decoder.decode_stream output_stream.write(decompressed) end |