From 66d22b803be1a0deb0e81b3d1ecb5b898719d302 Mon Sep 17 00:00:00 2001 From: Yann Collet Date: Mon, 2 Nov 2015 02:36:10 +0100 Subject: [PATCH] v0.3.1 --- Makefile | 2 +- NEWS | 3 +++ README.md | 26 ++++++++++---------------- images/CSpeed.png | Bin 0 -> 18232 bytes images/DSpeed.png | Bin 0 -> 5488 bytes programs/Makefile | 2 +- 6 files changed, 15 insertions(+), 18 deletions(-) create mode 100644 images/CSpeed.png create mode 100644 images/DSpeed.png diff --git a/Makefile b/Makefile index 4d837af85..8d63928f1 100644 --- a/Makefile +++ b/Makefile @@ -32,7 +32,7 @@ # ################################################################ # Version number -export VERSION := 0.3.0 +export VERSION := 0.3.1 PRGDIR = programs ZSTDDIR = lib diff --git a/NEWS b/NEWS index e8d8affa0..7d67e0283 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,6 @@ +v0.3.1 : +Small compression ratio improvement + v0.3 HC mode : compression levels 2-26 diff --git a/README.md b/README.md index a634fc8a9..d670002fd 100644 --- a/README.md +++ b/README.md @@ -13,36 +13,30 @@ For a taste of its performance, here are a few benchmark numbers from a number o |-----------------|-------|--------:|--------:| | | | MB/s | MB/s | | **zstd 0.3** |**2.858**|**280**| **670** | -| [zlib 1.2.8] -1 | 2.730 | 70 | 300 | +| [zlib] 1.2.8 -1 | 2.730 | 70 | 300 | | QuickLZ 1.5.1b6 | 2.237 | 370 | 415 | | LZO 2.06 | 2.106 | 400 | 580 | | [LZ4] r131 | 2.101 | 450 | 2100 | | Snappy 1.1.0 | 2.091 | 330 | 1100 | | LZF 3.6 | 2.077 | 200 | 560 | -[zlib 1.2.8]:http://www.zlib.net/ +[zlib]:http://www.zlib.net/ [LZ4]:http://www.lz4.org/ -Zstd can also offer stronger compression ratio at the cost of compression speed, but preserving its decompression speed. In the following test, a few compressors suitable for this scenario are selected (they offer very asymetric performance, useful when compression time has little importance). The test was completed on a Core i7-5600U @ 2.6 GHz, using [benchmark 0.6.1](http://encode.ru/threads/1266-In-memory-benchmark-with-fastest-LZSS-(QuickLZ-Snappy)-compressors?p=45217&viewfull=1#post45217), an open-source benchmark program by inikep. +Zstd can also offer stronger compression ratio at the cost of compression speed. Compression speed is highly configurable, by small increment, to fit different situations. Note however that decompression speed is preserved and remain roughly the same at all settings, a property shared by most LZ compression algorithms, such as [zlib]. The following test is run on a Core i7-3930K CPU @ 4.5GHz, using [lzbench], an open-source in-memory benchmark by inikep. -|Name | Ratio | C.speed | D.speed | -|-----------------|-------|--------:|--------:| -| | | MB/s | MB/s | -| brotli -9 | 3.729 | 4 | 340 | -| **zstd 0.3 -9** |**3.447**|**30** | **640** | -| [zlib 1.2.8] -9 | 3.133 | 10 | 300 | -| LZO 2.06 -999 | 2.790 | 1 | 560 | -| [LZ4] r131 -9 | 2.720 | 25 | 2100 | +![Compression Ratio vs Speed](images/CSpeed.png "Compression Ratio vs Speed") +![Decompression Speed](images/DSpeed.png "Decompression Speed") -[lzma]:http://www.7-zip.org/ - -Zstd compression speed is highly configurable, by small increment, to fit different situations. Its memory requirement can also be configured to fit into low-memory hardware configurations, or servers handling multiple connections/contexts in parallel. +[lzbench]:https://github.com/inikep/lzbench Zstd entropy stage is provided by [Huff0 and FSE, from Finite State Entrop library](https://github.com/Cyan4973/FiniteStateEntropy). -Zstd has not yet reached "stable" status. Specifically, it doesn't guarantee yet that its current compressed format will remain stable and supported in future versions. It may still change to adapt further optimizations still being investigated. That being said, the library is now pretty robust, able to withstand hazards situations, including invalid input. The library reliability has been tested using [Fuzz Testing](https://en.wikipedia.org/wiki/Fuzz_testing), with both [internal tools](programs/fuzzer.c) and [external ones](http://lcamtuf.coredump.cx/afl). Therefore, it's now safe to test Zstandard even within production environments. +Its memory requirement can also be configured to fit into low-memory hardware configurations, or servers handling multiple connections/contexts in parallel. + +Zstd has not yet reached "stable format" status. It doesn't guarantee yet that its current compressed format will remain stable and supported in future versions. During this period, it can still change to adapt new optimizations still being investigated. "Stable Format" is projected sometimes early 2016. -"Stable Format" is projected sometimes early 2016. +That being said, the library is now fairly robust, able to withstand hazards situations, including invalid inputs. The library reliability has been tested using [Fuzz Testing](https://en.wikipedia.org/wiki/Fuzz_testing), with both [internal tools](programs/fuzzer.c) and [external ones](http://lcamtuf.coredump.cx/afl). Therefore, it seems now safe to test Zstandard even within production environments. ### Branch Policy The "dev" branch is the one where all contributions will be merged before reaching "master". If you plan to propose a patch, please commit into the "dev" branch or its own feature branch. Direct commit to "master" are not permitted. diff --git a/images/CSpeed.png b/images/CSpeed.png new file mode 100644 index 0000000000000000000000000000000000000000..6e60dbc78f70e5907339a28c0399ecd63ec56895 GIT binary patch literal 18232 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 literal 0 Hc-jL100001 diff --git a/images/DSpeed.png b/images/DSpeed.png new file mode 100644 index 0000000000000000000000000000000000000000..b252ab65166cbc4b286a69cecabc44b7c273a4ad GIT binary patch literal 5488 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 literal 0 Hc-jL100001 diff --git a/programs/Makefile b/programs/Makefile index 3535ec5d8..8332871bb 100644 --- a/programs/Makefile +++ b/programs/Makefile @@ -30,7 +30,7 @@ # fullbench32: Same as fullbench, but forced to compile in 32-bits mode # ########################################################################## -VERSION?= 0.3.0 +VERSION?= 0.3.1 DESTDIR?= PREFIX ?= /usr/local -- 2.47.2