Skip to content

Zstandard v1.4.9

Choose a tag to compare
@felixhandte felixhandte released this 03 Mar 20:38
· 1590 commits to release since this release

This is an incremental release which includes various improvements and bug-fixes.

>2x Faster Long Distance Mode

Long Distance Mode (LDM) --long just got a whole lot faster thanks to optimizations by @mpu in #2483! These optimizations preserve the compression ratio but drastically speed up compression. It is especially noticeable in multithreaded mode, because the long distance match finder is not parallelized. Benchmarking with zstd -T0 -1 --long=31 on an Intel I9-9900K at 3.2 GHz we see:

File v1.4.8 MB/s v1.4.9 MB/s Improvement
silesia.tar 308 692 125%
linux-versions* 312 667 114%
enwik9 294 747 154%

* linux-versions is a concatenation of the linux 4.0, 5.0, and 5.10 git archives.

New Experimental Decompression Feature: ZSTD_d_refMultipleDDicts

If the advanced parameter ZSTD_d_refMultipleDDicts is enabled, then multiple calls to ZSTD_refDDict() will be honored in the corresponding DCtx. Example usage:

ZSTD_DCtx* dctx = ZSTD_createDCtx();
ZSTD_DCtx_setParameter(dctx, ZSTD_d_refMultipleDDicts, ZSTD_rmd_refMultipleDDicts);
ZSTD_DCtx_refDDict(dctx, ddict1);
ZSTD_DCtx_refDDict(dctx, ddict2);
ZSTD_DCtx_refDDict(dctx, ddict3);

Decompression of multiple frames, each with their own dictID, is now possible with a single ZSTD_decompress call. As long as the dictID from each frame header references one of the dictIDs within the DCtx, then the corresponding dictionary will be used to decompress that particular frame. Note that this feature is disabled with a statically-allocated DCtx.