In all cases, the nb of threads is capped to `ZSTDMT_NBWORKERS_MAX`,
which is either 64 in 32-bit mode, or 256 for 64-bit environments.
This modifier does nothing if `zstd` is compiled without multithread support.
+ Note that memory usage increases with each thread.
* `--single-thread`:
Use a single thread for both I/O and compression.
As compression is serialized with I/O, this can be slightly slower.
when combined with multiple worker threads (>=2).
* `--long[=#]`:
enables long distance matching with `#` `windowLog`, if `#` is not
- present it defaults to `27`.
+ present it defaults to `27`. The highest possible value is 31
This increases the window size (`windowLog`) and memory usage for both the
compressor and decompressor.
This setting is designed to improve the compression ratio for files with
/* check compression level limits */
{ int const maxCLevel = ultra ? ZSTD_maxCLevel() : ZSTDCLI_CLEVEL_MAX;
if (cLevel > maxCLevel) {
- DISPLAYLEVEL(2, "Warning : compression level higher than max, reduced to %i \n", maxCLevel);
+ DISPLAYLEVEL(2, "Warning : compression level higher than max, reduced to %i. ", maxCLevel);
+ DISPLAYLEVEL(2, "Specify --ultra to raise the limit to 22 and use "
+ "--long=31 for maximum compression. Note that this "
+ "requires high amounts of memory, and the resulting data "
+ "might be rejected by third-party decoders and is "
+ "therefore only recommended for archival purposes. \n");
cLevel = maxCLevel;
} }
#endif