Zstandard outperforms zlib in compression ratio, compression speed, and decompression speed (not shown). The only reason to stick with zlib is for compatibility with systems that expect zlib.
936 karma · joined March 7, 2017
Zstandard outperforms zlib in compression ratio, compression speed, and decompression speed (not shown). The only reason to stick with zlib is for compatibility with systems that expect zlib.
zstd --long=31 -T4 -10
It should be faster than lrzip + zstd and provide about the same results.The zstd CLI supports multithreaded compression with the flag `-T <num-threads>`.
* Btrfs compression is multithreaded, and can use up to the number of cores available on the system. * Compression might not help speed on SSDs, but it should help reduce the burn rate, if you care about that. * My intern wrote a patch to add compression level support to zstd in btrfs [1]. It should be merged upstream soon. * Slightly off topic, but grub will soon understand btrfs compressed with zstd.
[1] https://lore.kernel.org/linux-btrfs/20181031181108.289340-1-...
PEX is a self-extracting zip file which has to be fully extracted before being run. The extracted files could potentially be modified.
XAR is a self-mounting compressed SquashFS filesystem image. SquashFS will decompress pages lazily and cache the result in the page cache, so the startup time is much faster. Since SquashFS is read-only, the files can't be modified.
black: 0.171 s (vs 0.208 for XAR) jupyter: 0.165 s (vs 0.179 s for XAR)
My test setup used the older loading method because "pip install ." won't install wheels if the wheel package isn't installed in the virtualenv.
There are two ways to build a node app using the XAR builder tools. 1. Use the `make_xar` tool which will create a XAR from a directory and takes an optional script to run on execution. 2. Use the XAR builder library to make a XAR builder that is specialized for building node apps.
The test against native start speed was hot, so the pages required were already in the page cache, so the filesystem shouldn’t matter.
One big benefit is that the filesystem only decompresses the pages as needed, which greatly improves the start up time over existing solutions.
It is unfortunate that Xenial picked up version 0.5, but Yann Collet worked hard to get version 1.3.1 backported for this exact reason https://bugs.launchpad.net/ubuntu/+source/libzstd/+bug/17170....
[1] https://github.com/facebook/zstd/blob/dev/LICENSE [2] https://github.com/facebook/zstd/blob/dev/COPYING
The long range matcher has a configurable match size, where it will only look for matches that are at least that large. By default it is 64 B, but by making it larger, say 4 KB, you can ensure that if you are going to force a page fault, you get enough benefit.
[1] https://github.com/Cyan4973/FiniteStateEntropy
[2] https://github.com/facebook/zstd/blob/dev/doc/zstd_compressi...
I would expect a dictionary to be useful if the data is broken into chunks, and each chunk is compressed individually.
If the data is compressed as one frame, I would be very interested in an example where the dictionary helps.