/ concept-collection / benchcompress
Sign in
concept-collection / benchcompress
alg descriptions
Jeremy Magland <jmagland@flatironinstitute.org> committed commit ea7f46e75130 parent c390e57 Browse files
14 changed files+255−0
benchcompress/src/benchcompress/algorithms/ans/__init__.pymodified+16−0View file
@@ -1,4 +1,5 @@
11 import numpy as np
2+import os
23 from .markov_reconstruct import (
34 markov_reconstruct as markov_reconstruct_cpp,
45 )
@@ -7,9 +8,20 @@ from .markov_predict import (
78 )
89 from .get_run_lengths import get_run_lengths
910
11+
1012 SOURCE_FILE = "ans/__init__.py"
1113
1214
15+def _load_long_description():
16+ current_dir = os.path.dirname(os.path.abspath(__file__))
17+ md_path = os.path.join(current_dir, "ans.md")
18+ with open(md_path, "r", encoding="utf-8") as f:
19+ return f.read()
20+
21+
22+LONG_DESCRIPTION = _load_long_description()
23+
24+
1325 def ans_encode(x: np.ndarray) -> bytes:
1426 from simple_ans import ans_encode
1527
@@ -442,6 +454,7 @@ algorithms = [
442454 "description": "ANS compression via simple_ans for efficient data compression.",
443455 "tags": ["ANS", "integer"],
444456 "source_file": SOURCE_FILE,
457+ "long_description": LONG_DESCRIPTION,
445458 },
446459 {
447460 "name": "ANS-delta",
@@ -451,6 +464,7 @@ algorithms = [
451464 "description": "ANS compression via simple_ans with delta encoding for improved compression of sequential data.",
452465 "tags": ["ANS", "integer", "delta_encoding", "1d"],
453466 "source_file": SOURCE_FILE,
467+ "long_description": LONG_DESCRIPTION,
454468 },
455469 {
456470 "name": "ANS-markov",
@@ -460,6 +474,7 @@ algorithms = [
460474 "description": "ANS compression via simple_ans with Markov prediction for exploiting temporal correlations in the data.",
461475 "tags": ["ANS", "integer", "markov_prediction", "1d"],
462476 "source_file": SOURCE_FILE,
477+ "long_description": LONG_DESCRIPTION,
463478 },
464479 {
465480 "name": "ANS-markov-zrle",
@@ -469,5 +484,6 @@ algorithms = [
469484 "description": "ANS compression via simple_ans with Markov prediction and zero run-length encoding for sparse data.",
470485 "tags": ["ANS", "integer", "markov_prediction", "zero_rle", "1d"],
471486 "source_file": SOURCE_FILE,
487+ "long_description": LONG_DESCRIPTION,
472488 },
473489 ]
benchcompress/src/benchcompress/algorithms/ans/ans.mdadded+26−0View file
@@ -0,0 +1,26 @@
1+# ANS (Asymmetric Numeral Systems) Algorithm
2+
3+ANS is a modern entropy coding method that achieves a compression ratio near arithmetic coding with relatively efficient encoding and decoding. It achieves this by maintaining a state that represents the encoded data in a way that can be efficiently updated. The implementation uses the [simple_ans](https://github.com/flatironinstitute/simple_ans) Python package.
4+
5+## Variants
6+
7+### Basic ANS
8+- ANS: Standard implementation using the simple_ans library
9+- Efficiently encodes integer data by modeling symbol frequencies
10+
11+### Delta Encoding
12+- ANS-delta: ANS compression with delta encoding
13+- Stores differences between consecutive values
14+- Effective for sequences where adjacent values are similar
15+
16+### Markov Prediction
17+- ANS-markov: ANS with Markov prediction
18+- Uses a 6th-order Markov model to predict values based on previous samples
19+- Compresses the prediction residuals
20+- Particularly effective for data with temporal correlations
21+
22+### Markov with Zero RLE
23+- ANS-markov-zrle: Combines Markov prediction with zero run-length encoding
24+- Identifies runs of zero values and encodes their lengths
25+- Applies Markov prediction to the non-zero regions
26+- Ideal for sparse data with many zeros interspersed with correlated non-zero values
benchcompress/src/benchcompress/algorithms/brotli/__init__.pymodified+16−0View file
@@ -1,10 +1,21 @@
11 import numpy as np
22 import brotli
3+import os
34
45
56 SOURCE_FILE = "brotli/__init__.py"
67
78
9+def _load_long_description():
10+ current_dir = os.path.dirname(os.path.abspath(__file__))
11+ md_path = os.path.join(current_dir, "brotli.md")
12+ with open(md_path, "r", encoding="utf-8") as f:
13+ return f.read()
14+
15+
16+LONG_DESCRIPTION = _load_long_description()
17+
18+
819 def brotli_delta_encode(x: np.ndarray, level: int) -> bytes:
920 assert x.ndim == 1
1021 y = np.diff(x)
@@ -42,6 +53,7 @@ algorithms = [
4253 "description": "Brotli compression at level 4 (faster).",
4354 "tags": ["brotli"],
4455 "source_file": SOURCE_FILE,
56+ "long_description": LONG_DESCRIPTION,
4557 },
4658 {
4759 "name": "brotli-6",
@@ -51,6 +63,7 @@ algorithms = [
5163 "description": "Brotli compression at level 6 (balanced).",
5264 "tags": ["brotli"],
5365 "source_file": SOURCE_FILE,
66+ "long_description": LONG_DESCRIPTION,
5467 },
5568 {
5669 "name": "brotli-8",
@@ -60,6 +73,7 @@ algorithms = [
6073 "description": "Brotli compression at level 8 (better compression).",
6174 "tags": ["brotli"],
6275 "source_file": SOURCE_FILE,
76+ "long_description": LONG_DESCRIPTION,
6377 },
6478 {
6579 "name": "brotli-11",
@@ -69,6 +83,7 @@ algorithms = [
6983 "description": "Brotli compression at maximum level 11.",
7084 "tags": ["brotli"],
7185 "source_file": SOURCE_FILE,
86+ "long_description": LONG_DESCRIPTION,
7287 },
7388 {
7489 "name": "brotli-11-delta",
@@ -78,5 +93,6 @@ algorithms = [
7893 "description": "Brotli compression at level 11 with delta encoding.",
7994 "tags": ["brotli", "delta_encoding", "1d"],
8095 "source_file": SOURCE_FILE,
96+ "long_description": LONG_DESCRIPTION,
8197 },
8298 ]
benchcompress/src/benchcompress/algorithms/brotli/brotli.mdadded+18−0View file
@@ -0,0 +1,18 @@
1+# Brotli Algorithm
2+
3+Brotli is a general-purpose data compression algorithm developed by Google. It uses a combination of modern compression techniques including LZ77, Huffman coding, and context modeling.
4+
5+## Variants
6+
7+We provide several variants with different compression levels:
8+
9+### Standard Compression
10+- brotli-4: Fast compression with moderate ratio
11+- brotli-6: Balanced between speed and compression
12+- brotli-8: Better compression at cost of speed
13+- brotli-11: Maximum compression level
14+
15+### Delta-Encoded Compression
16+- brotli-11-delta: Maximum compression with delta encoding
17+
18+Delta encoding stores differences between consecutive values rather than the values themselves. This can improve compression for sequences where adjacent values are often similar, like time series data.
benchcompress/src/benchcompress/algorithms/bzip2/__init__.pymodified+17−0View file
@@ -1,9 +1,20 @@
11 import numpy as np
2+import os
23
34
45 SOURCE_FILE = "bzip2/__init__.py"
56
67
8+def _load_long_description():
9+ current_dir = os.path.dirname(os.path.abspath(__file__))
10+ md_path = os.path.join(current_dir, "bzip2.md")
11+ with open(md_path, "r", encoding="utf-8") as f:
12+ return f.read()
13+
14+
15+LONG_DESCRIPTION = _load_long_description()
16+
17+
718 def bzip2_encode(x: np.ndarray, level: int) -> bytes:
819 import bz2
920
@@ -50,6 +61,7 @@ algorithms = [
5061 "description": "Bzip2 compression at level 1 (fastest).",
5162 "tags": ["bzip2"],
5263 "source_file": SOURCE_FILE,
64+ "long_description": LONG_DESCRIPTION,
5365 },
5466 {
5567 "name": "bzip2-3",
@@ -59,6 +71,7 @@ algorithms = [
5971 "description": "Bzip2 compression at level 3.",
6072 "tags": ["bzip2"],
6173 "source_file": SOURCE_FILE,
74+ "long_description": LONG_DESCRIPTION,
6275 },
6376 {
6477 "name": "bzip2-5",
@@ -68,6 +81,7 @@ algorithms = [
6881 "description": "Bzip2 compression at level 5 (medium).",
6982 "tags": ["bzip2"],
7083 "source_file": SOURCE_FILE,
84+ "long_description": LONG_DESCRIPTION,
7185 },
7286 {
7387 "name": "bzip2-7",
@@ -77,6 +91,7 @@ algorithms = [
7791 "description": "Bzip2 compression at level 7.",
7892 "tags": ["bzip2"],
7993 "source_file": SOURCE_FILE,
94+ "long_description": LONG_DESCRIPTION,
8095 },
8196 {
8297 "name": "bzip2-9",
@@ -86,6 +101,7 @@ algorithms = [
86101 "description": "Bzip2 compression at maximum level 9.",
87102 "tags": ["bzip2"],
88103 "source_file": SOURCE_FILE,
104+ "long_description": LONG_DESCRIPTION,
89105 },
90106 {
91107 "name": "bzip2-9-delta",
@@ -95,5 +111,6 @@ algorithms = [
95111 "description": "Bzip2 compression at level 9 with delta encoding.",
96112 "tags": ["bzip2", "delta_encoding", "1d"],
97113 "source_file": SOURCE_FILE,
114+ "long_description": LONG_DESCRIPTION,
98115 },
99116 ]
benchcompress/src/benchcompress/algorithms/bzip2/bzip2.mdadded+18−0View file
@@ -0,0 +1,18 @@
1+# Bzip2 Algorithm
2+
3+Bzip2 is a compression algorithm that uses the Burrows-Wheeler transform along with Huffman coding. It typically achieves better compression than traditional LZ77/LZ78-based algorithms but at the cost of speed.
4+
5+## Variants
6+
7+### Standard Compression
8+Different compression levels trading off speed vs compression ratio:
9+- bzip2-1: Fastest compression
10+- bzip2-3: Better compression than level 1
11+- bzip2-5: Medium compression
12+- bzip2-7: Better compression than level 5
13+- bzip2-9: Maximum compression
14+
15+### Delta Encoding
16+- bzip2-9-delta: Maximum compression with delta encoding
17+
18+Delta encoding stores differences between consecutive values rather than the values themselves. This can improve compression for sequences where adjacent values are often similar, such as time series data.
benchcompress/src/benchcompress/algorithms/lz4/__init__.pymodified+16−0View file
@@ -1,9 +1,20 @@
11 import numpy as np
2+import os
23
34
45 SOURCE_FILE = "lz4/__init__.py"
56
67
8+def _load_long_description():
9+ current_dir = os.path.dirname(os.path.abspath(__file__))
10+ md_path = os.path.join(current_dir, "lz4.md")
11+ with open(md_path, "r", encoding="utf-8") as f:
12+ return f.read()
13+
14+
15+LONG_DESCRIPTION = _load_long_description()
16+
17+
718 def lz4_encode(x: np.ndarray, level: int) -> bytes:
819 import lz4.frame
920
@@ -50,6 +61,7 @@ algorithms = [
5061 "description": "LZ4 compression at level 0 (fastest).",
5162 "tags": ["lz4"],
5263 "source_file": SOURCE_FILE,
64+ "long_description": LONG_DESCRIPTION,
5365 },
5466 {
5567 "name": "lz4-3",
@@ -59,6 +71,7 @@ algorithms = [
5971 "description": "LZ4 compression at level 3 (minimum high compression).",
6072 "tags": ["lz4"],
6173 "source_file": SOURCE_FILE,
74+ "long_description": LONG_DESCRIPTION,
6275 },
6376 {
6477 "name": "lz4-10",
@@ -68,6 +81,7 @@ algorithms = [
6881 "description": "LZ4 compression at level 10.",
6982 "tags": ["lz4"],
7083 "source_file": SOURCE_FILE,
84+ "long_description": LONG_DESCRIPTION,
7185 },
7286 {
7387 "name": "lz4-16",
@@ -77,6 +91,7 @@ algorithms = [
7791 "description": "LZ4 compression at level 16 (highest compression).",
7892 "tags": ["lz4"],
7993 "source_file": SOURCE_FILE,
94+ "long_description": LONG_DESCRIPTION,
8095 },
8196 {
8297 "name": "lz4-16-delta",
@@ -86,5 +101,6 @@ algorithms = [
86101 "description": "LZ4 compression at level 16 with delta encoding.",
87102 "tags": ["lz4", "delta_encoding", "1d"],
88103 "source_file": SOURCE_FILE,
104+ "long_description": LONG_DESCRIPTION,
89105 },
90106 ]
benchcompress/src/benchcompress/algorithms/lz4/lz4.mdadded+17−0View file
@@ -0,0 +1,17 @@
1+# LZ4 Algorithm
2+
3+LZ4 is a lossless compression algorithm focused on compression and decompression speed. It belongs to the LZ77 family of byte-oriented compression schemes and is particularly well-suited for real-time compression scenarios.
4+
5+## Variants
6+
7+### Standard Compression
8+Different compression levels trading off speed vs compression ratio:
9+- lz4-0: Fastest compression mode
10+- lz4-3: Minimum high compression mode
11+- lz4-10: Higher compression
12+- lz4-16: Maximum compression
13+
14+### Delta Encoding
15+- lz4-16-delta: Maximum compression with delta encoding
16+
17+Delta encoding stores differences between consecutive values rather than the values themselves. This can improve compression for sequences where adjacent values are often similar, such as time series data.
benchcompress/src/benchcompress/algorithms/lzma/__init__.pymodified+13−0View file
@@ -1,9 +1,20 @@
11 import numpy as np
2+import os
23
34
45 SOURCE_FILE = "lzma/__init__.py"
56
67
8+def _load_long_description():
9+ current_dir = os.path.dirname(os.path.abspath(__file__))
10+ md_path = os.path.join(current_dir, "lzma.md")
11+ with open(md_path, "r", encoding="utf-8") as f:
12+ return f.read()
13+
14+
15+LONG_DESCRIPTION = _load_long_description()
16+
17+
718 def lzma_delta_encode(x: np.ndarray, preset: int) -> bytes:
819 import lzma
920
@@ -50,6 +61,7 @@ algorithms = [
5061 "description": "LZMA compression at maximum preset 9 for highest compression ratio.",
5162 "tags": ["lzma"],
5263 "source_file": SOURCE_FILE,
64+ "long_description": LONG_DESCRIPTION,
5365 },
5466 {
5567 "name": "lzma-9-delta",
@@ -59,5 +71,6 @@ algorithms = [
5971 "description": "LZMA compression at preset 9 with delta encoding for improved compression of sequential data.",
6072 "tags": ["lzma", "delta_encoding", "1d"],
6173 "source_file": SOURCE_FILE,
74+ "long_description": LONG_DESCRIPTION,
6275 },
6376 ]
benchcompress/src/benchcompress/algorithms/lzma/lzma.mdadded+16−0View file
@@ -0,0 +1,16 @@
1+# LZMA Algorithm
2+
3+LZMA (Lempel-Ziv-Markov chain Algorithm) is a compression algorithm that provides high compression ratios. It uses a dictionary compression scheme similar to LZ77 but with sophisticated modeling of repeating patterns using Markov chains.
4+
5+## Variants
6+
7+### Standard Compression
8+- lzma-9: Maximum compression preset (level 9)
9+ - Focuses on achieving the highest possible compression ratio
10+ - Uses larger dictionary sizes and more complex modeling
11+ - Generally slower than other compression algorithms but produces smaller files
12+
13+### Delta Encoding
14+- lzma-9-delta: Maximum compression with delta encoding
15+
16+Delta encoding stores differences between consecutive values rather than the values themselves. This can improve compression for sequences where adjacent values are often similar, such as time series data.
benchcompress/src/benchcompress/algorithms/zlib/__init__.pymodified+17−0View file
@@ -1,9 +1,20 @@
11 import numpy as np
2+import os
23
34
45 SOURCE_FILE = "zlib/__init__.py"
56
67
8+def _load_long_description():
9+ current_dir = os.path.dirname(os.path.abspath(__file__))
10+ md_path = os.path.join(current_dir, "zlib.md")
11+ with open(md_path, "r", encoding="utf-8") as f:
12+ return f.read()
13+
14+
15+LONG_DESCRIPTION = _load_long_description()
16+
17+
718 def zlib_encode(x: np.ndarray, level: int) -> bytes:
819 import zlib
920
@@ -50,6 +61,7 @@ algorithms = [
5061 "description": "Zlib DEFLATE compression at level 1 (fastest).",
5162 "tags": ["zlib"],
5263 "source_file": SOURCE_FILE,
64+ "long_description": LONG_DESCRIPTION,
5365 },
5466 {
5567 "name": "zlib-3",
@@ -59,6 +71,7 @@ algorithms = [
5971 "description": "Zlib DEFLATE compression at level 3.",
6072 "tags": ["zlib"],
6173 "source_file": SOURCE_FILE,
74+ "long_description": LONG_DESCRIPTION,
6275 },
6376 {
6477 "name": "zlib-5",
@@ -68,6 +81,7 @@ algorithms = [
6881 "description": "Zlib DEFLATE compression at level 5 (medium).",
6982 "tags": ["zlib"],
7083 "source_file": SOURCE_FILE,
84+ "long_description": LONG_DESCRIPTION,
7185 },
7286 {
7387 "name": "zlib-7",
@@ -77,6 +91,7 @@ algorithms = [
7791 "description": "Zlib DEFLATE compression at level 7.",
7892 "tags": ["zlib"],
7993 "source_file": SOURCE_FILE,
94+ "long_description": LONG_DESCRIPTION,
8095 },
8196 {
8297 "name": "zlib-9",
@@ -86,6 +101,7 @@ algorithms = [
86101 "description": "Zlib DEFLATE compression at maximum level 9.",
87102 "tags": ["zlib"],
88103 "source_file": SOURCE_FILE,
104+ "long_description": LONG_DESCRIPTION,
89105 },
90106 {
91107 "name": "zlib-9-delta",
@@ -95,5 +111,6 @@ algorithms = [
95111 "description": "Zlib DEFLATE compression at level 9 with delta encoding.",
96112 "tags": ["zlib", "delta_encoding", "1d"],
97113 "source_file": SOURCE_FILE,
114+ "long_description": LONG_DESCRIPTION,
98115 },
99116 ]
benchcompress/src/benchcompress/algorithms/zlib/zlib.mdadded+18−0View file
@@ -0,0 +1,18 @@
1+# Zlib Algorithm
2+
3+Zlib is a data compression library that uses the DEFLATE algorithm, which combines LZ77 and Huffman coding. It provides a good balance between compression ratio and speed, making it widely used in many applications.
4+
5+## Variants
6+
7+### Standard Compression
8+Different compression levels trading off speed vs compression ratio:
9+- zlib-1: Fastest compression
10+- zlib-3: Better compression than level 1
11+- zlib-5: Medium compression
12+- zlib-7: Better compression than level 5
13+- zlib-9: Maximum compression
14+
15+### Delta Encoding
16+- zlib-9-delta: Maximum compression with delta encoding
17+
18+Delta encoding stores differences between consecutive values rather than the values themselves. This can improve compression for sequences where adjacent values are often similar, such as time series data.
benchcompress/src/benchcompress/algorithms/zstd/__init__.pymodified+21−0View file
@@ -1,4 +1,5 @@
11 import numpy as np
2+import os
23 from ..ans.markov_reconstruct import markov_reconstruct as markov_reconstruct_cpp
34 from ..ans.markov_predict import markov_predict as markov_predict_cpp
45 from ..ans.get_run_lengths import get_run_lengths
@@ -7,6 +8,16 @@ from ..ans.get_run_lengths import get_run_lengths
78 SOURCE_FILE = "zstd/__init__.py"
89
910
11+def _load_long_description():
12+ current_dir = os.path.dirname(os.path.abspath(__file__))
13+ md_path = os.path.join(current_dir, "zstd.md")
14+ with open(md_path, "r", encoding="utf-8") as f:
15+ return f.read()
16+
17+
18+LONG_DESCRIPTION = _load_long_description()
19+
20+
1021 def zstd_delta_encode(x: np.ndarray, level: int) -> bytes:
1122 import zstandard as zstd
1223
@@ -230,6 +241,7 @@ algorithms = [
230241 "description": "Zstandard compression at level 4 (fast compression).",
231242 "tags": ["zstd"],
232243 "source_file": SOURCE_FILE,
244+ "long_description": LONG_DESCRIPTION,
233245 },
234246 {
235247 "name": "zstd-7",
@@ -239,6 +251,7 @@ algorithms = [
239251 "description": "Zstandard compression at level 7 (balanced speed/compression).",
240252 "tags": ["zstd"],
241253 "source_file": SOURCE_FILE,
254+ "long_description": LONG_DESCRIPTION,
242255 },
243256 {
244257 "name": "zstd-10",
@@ -248,6 +261,7 @@ algorithms = [
248261 "description": "Zstandard compression at level 10 (better compression).",
249262 "tags": ["zstd"],
250263 "source_file": SOURCE_FILE,
264+ "long_description": LONG_DESCRIPTION,
251265 },
252266 {
253267 "name": "zstd-13",
@@ -257,6 +271,7 @@ algorithms = [
257271 "description": "Zstandard compression at level 13 (high compression).",
258272 "tags": ["zstd"],
259273 "source_file": SOURCE_FILE,
274+ "long_description": LONG_DESCRIPTION,
260275 },
261276 {
262277 "name": "zstd-16",
@@ -266,6 +281,7 @@ algorithms = [
266281 "description": "Zstandard compression at level 16 (very high compression).",
267282 "tags": ["zstd"],
268283 "source_file": SOURCE_FILE,
284+ "long_description": LONG_DESCRIPTION,
269285 },
270286 {
271287 "name": "zstd-19",
@@ -275,6 +291,7 @@ algorithms = [
275291 "description": "Zstandard compression at level 19 (ultra high compression).",
276292 "tags": ["zstd"],
277293 "source_file": SOURCE_FILE,
294+ "long_description": LONG_DESCRIPTION,
278295 },
279296 {
280297 "name": "zstd-22",
@@ -284,6 +301,7 @@ algorithms = [
284301 "description": "Zstandard compression at maximum level 22 (highest compression).",
285302 "tags": ["zstd"],
286303 "source_file": SOURCE_FILE,
304+ "long_description": LONG_DESCRIPTION,
287305 },
288306 {
289307 "name": "zstd-22-delta",
@@ -293,6 +311,7 @@ algorithms = [
293311 "description": "Zstandard compression at level 22 with delta encoding for improved compression of sequential data.",
294312 "tags": ["zstd", "delta_encoding", "1d"],
295313 "source_file": SOURCE_FILE,
314+ "long_description": LONG_DESCRIPTION,
296315 },
297316 {
298317 "name": "zstd-22-markov",
@@ -302,6 +321,7 @@ algorithms = [
302321 "description": "Zstandard compression at level 22 with Markov prediction for exploiting temporal correlations in the data.",
303322 "tags": ["zstd", "markov_prediction", "1d"],
304323 "source_file": SOURCE_FILE,
324+ "long_description": LONG_DESCRIPTION,
305325 },
306326 {
307327 "name": "zstd-22-markov-zrle",
@@ -311,5 +331,6 @@ algorithms = [
311331 "description": "Zstandard compression at level 22 with Markov prediction and zero run-length encoding for sparse data.",
312332 "tags": ["zstd", "markov_prediction", "zero_rle", "1d"],
313333 "source_file": SOURCE_FILE,
334+ "long_description": LONG_DESCRIPTION,
314335 },
315336 ]
benchcompress/src/benchcompress/algorithms/zstd/zstd.mdadded+26−0View file
@@ -0,0 +1,26 @@
1+# Zstandard Algorithm
2+
3+Zstandard (zstd) is a fast real-time compression algorithm developed by Facebook. It provides a wide range of compression levels and supports custom dictionaries for improved compression.
4+
5+## Variants
6+
7+### Standard Compression
8+Different compression levels trading off speed vs compression ratio:
9+- zstd-4: Fast compression
10+- zstd-7: Balanced speed/compression
11+- zstd-10: Better compression
12+- zstd-13: High compression
13+- zstd-16: Very high compression
14+- zstd-19: Ultra high compression
15+- zstd-22: Maximum compression
16+
17+### Advanced Variants
18+
19+#### Delta Encoding (zstd-22-delta)
20+Stores differences between consecutive values. Effective for sequences where adjacent values are similar, like time series data.
21+
22+#### Markov Prediction (zstd-22-markov)
23+Uses a Markov model to predict values based on previous samples. The prediction residuals are then compressed using zstd. This can significantly improve compression for data with temporal correlations.
24+
25+#### Markov with Zero RLE (zstd-22-markov-zrle)
26+Combines Markov prediction with zero run-length encoding. Particularly effective for sparse data where many values are zero, as it efficiently encodes runs of zeros while using Markov prediction for the non-zero regions.
moveopenescclose