xz: Use threaded mode by defaut (as if --threads=0 was used).

This hopefully does more good than bad:

  + It's faster by default.

  + Only the threaded compressor creates files that
    can be decompressed in threaded mode.

  - Compression ratio is worse, usually not too much though.
    When it matters, -T1 must be used.

  - Memory usage increases.

  - Scripts that assume single-threaded mode but don't use -T1 will
    possibly use too much resources, for example, if they run
    multiple xz processes in parallel to compress multiple files.

  - Output from single-threaded and multi-threaded compressors
    differ but such changes could happen for other reasons too
    (they just haven't happened since 5.0.0).
This commit is contained in:
Lasse Collin 2024-01-23 18:29:28 +02:00
parent a2dd2dc8e5
commit 6daa4d0ea4
3 changed files with 16 additions and 3 deletions

View File

@ -15,7 +15,7 @@
/// Maximum number of worker threads. This can be set with
/// the --threads=NUM command line option.
static uint32_t threads_max = 1;
static uint32_t threads_max;
/// True when the number of threads is automatically determined based
/// on the available hardware threads.
@ -334,5 +334,9 @@ hardware_init(void)
memlimit_mt_default = mem_ceiling;
#endif
// Enable threaded mode by default. xz 5.4.x and older
// used single-threaded mode by default.
hardware_threads_set(0);
return;
}

View File

@ -1022,8 +1022,8 @@ message_help(bool long_help)
" does not affect decompressor memory requirements"));
puts(_(
" -T, --threads=NUM use at most NUM threads; the default is 1; set to 0\n"
" to use as many threads as there are processor cores"));
" -T, --threads=NUM use at most NUM threads; the default is 0 which uses\n"
" as many threads as there are processor cores"));
if (long_help) {
puts(_(

View File

@ -1303,6 +1303,15 @@ meet this condition,
but files compressed in single-threaded mode don't even if
.BI \-\-block\-size= size
has been used.
.IP ""
The default value for
.I threads
is
.BR 0 .
In
.B xz
5.4.x and older the default is
.BR 1 .
.
.SS "Custom compressor filter chains"
A custom filter chain allows specifying