blob: 5f49c8fe0a677e30a3da4d967f6d7fc44a9f8989 [file] [log] [blame] [view]
Yann Collet4856a002015-01-24 01:58:16 +01001 **ZSTD**, short for Z-Standard, is a new lossless compression algorithm, which provides both good compression ratio _and_ speed for your standard compression needs. "Standard" translates into everyday situations which neither look for highest possible ratio (which LZMA and ZPAQ cover) nor extreme speeds (which LZ4 covers).
2
3It is provided as a BSD-license package, hosted on Github.
4
5|Branch |Status |
6|------------|---------|
7|master | [![Build Status](https://travis-ci.org/Cyan4973/zstd.svg?branch=master)](https://travis-ci.org/Cyan4973/zstd) |
8|dev | [![Build Status](https://travis-ci.org/Cyan4973/zstd.svg?branch=dev)](https://travis-ci.org/Cyan4973/zstd) |
9
10For a taste of its performance, here are a few benchmark numbers, completed on a Core i5-4300U @ 1.9 GHz, using [fsbench 0.14.3](http://encode.ru/threads/1371-Filesystem-benchmark?p=34029&viewfull=1#post34029), an open-source benchmark program by m^2.
11
12|Name | Ratio | C.speed | D.speed |
13|---------------|-------|---------|---------|
14| | | MB/s | MB/s |
Yann Colletf506c8b2015-01-24 10:31:47 +010015| [zlib 1.2.8 -6](http://www.zlib.net/)| 3.099 | 18 | 275 |
Yann Collet4856a002015-01-24 01:58:16 +010016| **ZSTD** |**2.872**|**201**|**498** |
Yann Colletf506c8b2015-01-24 10:31:47 +010017| [zlib 1.2.8 -1](http://www.zlib.net/)| 2.730 | 58 | 250 |
18| [LZ4 HC r127](https://github.com/Cyan4973/lz4)| 2.720 | 26 | 1720 |
Yann Collet4856a002015-01-24 01:58:16 +010019| QuickLZ 1.5.1b6|2.237 | 323 | 373 |
20| LZO 2.06 | 2.106 | 351 | 510 |
21| Snappy 1.1.0 | 2.091 | 238 | 964 |
Yann Colletf506c8b2015-01-24 10:31:47 +010022| [LZ4 r127](https://github.com/Cyan4973/lz4)| 2.084 | 370 | 1590 |
Yann Collet4856a002015-01-24 01:58:16 +010023| LZF 3.6 | 2.077 | 220 | 502 |
24
25An interesting feature of ZSTD is that it can qualify as both a reasonably strong compressor and a fast one.
26
27ZSTD delivers high decompression speed, at around ~500 MB/s per core.
28Obviously, your exact mileage will vary depending on your target system.
29
30ZSTD compression speed, on the other hand, can be configured to fit different situations.
31The first, fast, derivative offers ~200 MB/s per core, which is suitable for a few real-time scenarios.
Yann Colletf506c8b2015-01-24 10:31:47 +010032But similar to [LZ4](https://github.com/Cyan4973/lz4), ZSTD can offer derivatives trading compression time for compression ratio, while keeping decompression properties intact. "Offline compression", where compression time is of little importance because the content is only compressed once and decompressed many times, is therefore within the scope.
Yann Collet4856a002015-01-24 01:58:16 +010033
34Note that high compression derivatives still have to be developed.
35It's a complex area which will certainly benefit the contributions from a few experts.
36
37
38Another property ZSTD is developed for is configurable memory requirement, with the objective to fit into low-memory configurations, or servers handling many connections in parallel.
39
Yann Colletf506c8b2015-01-24 10:31:47 +010040ZSTD entropy stage is provided by [FSE (Finite State Entropy)](https://github.com/Cyan4973/FiniteStateEntropy).
41
Yann Collet4856a002015-01-24 01:58:16 +010042ZSTD development is starting. So consider current results merely as early ones. The implementation will gradually evolve and improve overtime, especially during this first year. This is a phase which will depend a lot on user feedback, since these feedback will be key in deciding next priorities or features to add.
43
44The "master" branch is reserved for stable release and betas.
45The "dev" branch is the one where all contributions will be merged. If you plan to propose a patch, please commit into the "dev" branch. Direct commit to "master" are not permitted.
46Feature branches will also exist, typically to introduce new requirements, and be temporarily available for testing before merge into "dev" branch.