From 4355f268543a3e79faefb4225c242fce32c49336 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Sun, 15 Feb 2015 23:16:23 -0600 Subject: [PATCH] Update NEWS, README, and docs --- NEWS | 28 +++++++++++++++++++++++----- README | 21 ++++++++------------- doc/man1/wimlib-imagex-capture.1 | 7 ++++--- include/wimlib.h | 8 +++++--- 4 files changed, 40 insertions(+), 24 deletions(-) diff --git a/NEWS b/NEWS index 14c128b0..1ce8e394 100644 --- a/NEWS +++ b/NEWS @@ -1,14 +1,32 @@ Version 1.7.5-BETA: - The performance of LZX compression has been improved by 15-20%. This is - the default compression mode of wimlib-imagex. + Improved the LZX compressor. It is now 15-20% faster than before and + provides a slightly better compression ratio. - The file list printed by 'wimdir' is now sorted by the platform-specific - case sensitivity setting, rather than always case sensitively. This - also affects the library function wimlib_iterate_dir_tree(). + Improved the LZMS compressor. It now provides a compression ratio + slightly better than WIMGAPI while still being faster and using slightly + less memory. + + The compression chunk size in solid resources, e.g. when capturing or + exporting a WIM file using the '--solid' option, now defaults to 64 MiB + (67108864 bytes) instead of 32 MiB (33554432 bytes). This provides a + better compression ratio and is the same value that WIMGAPI uses. The + memory usage is less than 50% higher than wimlib v1.7.4 and is slightly + lower than WIMGAPI's memory usage, but if it is too much, it is still + possible to choose a lower value, e.g. with the '--solid-chunk-size' + option to wimlib-imagex. + + The '--chunk-size' and '--solid-chunk-size' options to wimlib-imagex now + accept the 'K', 'M', and 'G' suffixes. + + Files are now sorted by name extension when creating a solid WIM file. Fixed various issues related to capture/apply of EFS-encrypted files on Windows. + The file list printed by 'wimdir' is now sorted by the platform-specific + case sensitivity setting, rather than always case sensitively. This + also affects the library function wimlib_iterate_dir_tree(). + On Windows, some error and warning messages have been improved. Version 1.7.4: diff --git a/README b/README index 4baeedc0..966ec45a 100644 --- a/README +++ b/README @@ -68,8 +68,8 @@ wimlib (and wimlib-imagex) can create XPRESS, LZX, or LZMS compressed WIM files. wimlib includes its own compression codecs and does not use the compression API available on some versions of Windows. -I have gradually been improving the compression codecs in wimlib. For XPRESS -and LZX, they now usually outperform and outcompress the equivalent Microsoft +I have gradually been improving the compression codecs in wimlib. For all three +codecs, they now usually outperform and outcompress the equivalent Microsoft implementations. Although results will vary depending on the data being compressed, in the table below I present the results for a common use case: compressing an x86 Windows PE image. Each row displays the compression type, @@ -86,8 +86,8 @@ implementation in WIMGAPI is included. | LZX (quick) [4] || 130,207,195 in 3.8s | N/A | | LZX (normal) [5] || 126,522,539 in 10.4s | 127,293,240 in 19.2s | | LZX (slow) [6] || 126,042,313 in 17.3s | N/A | - | LZMS (non-solid) [7] || 121,909,792 in 11.9s | N/A | - | LZMS (solid) [8] || 93,650,936 in 45.0s | 88,771,192 in 109.2 | + | LZMS (non-solid) [7] || 116,150,682 in 25.3s | N/A | + | LZMS (solid) [8] || 88,107,484 in 61.7s | 88,769,830 in 102.3s | | "WIMBoot" [9] || 167,023,719 in 3.5s | 169,109,211 in 10.4s | | "WIMBoot" (slow) [10] || 165,027,583 in 7.9s | N/A | ============================================================================= @@ -116,8 +116,7 @@ Notes: [8] '--solid' for wimlib-imagex. Should be '/compress:recovery' for DISM, but only works for /Export-Image, not /Capture-Image. Compression chunk - size in solid resources defaults to 33554432 for wimlib, 67108864 for - DISM. + size in solid resources defaults to 67108864 bytes in both cases. [9] '--wimboot' for wimlib-imagex; '/wimboot' for DISM. This is really XPRESS compression with 4096 byte chunks, so the same as @@ -140,7 +139,7 @@ Testing environment: The compression ratio provided by wimlib is also competitive with commonly used archive formats. Below are file sizes that result when the Canterbury corpus is -compressed with wimlib (v1.7.2), WIMGAPI (Windows 8.1), and some other +compressed with wimlib (v1.7.5), WIMGAPI (Windows 8.1), and some other formats/programs: ===================================================== @@ -159,15 +158,11 @@ formats/programs: | WIM (WIMGAPI, LZX) | 651,866 | | WIM (wimlib, LZX normal) | 624,634 | | WIM (wimlib, LZX slow) | 620,728 | - | WIM (wimlib, LZMS non-solid) | 581,960 | + | WIM (wimlib, LZMS non-solid) | 581,046 | | tar.bz2 (bzip, default) | 565,008 | | tar.bz2 (bzip, -9) | 565,008 | - | WIM (wimlib, LZX solid) | 527,688 | - | WIM (wimlib, LZMS solid) | 525,990 | - | WIM (wimlib, LZMS solid, slow) | 523,728 | - | WIM (wimlib, LZX solid, slow) | 522,042 | | WIM (WIMGAPI, LZMS solid) | 521,366 | - | WIM (wimlib, LZX solid, very slow) | 519,546 | + | WIM (wimlib, LZMS solid) | 515,800 | | tar.xz (xz, default) | 486,916 | | tar.xz (xz, -9) | 486,904 | | 7z (7-zip, default) | 484,700 | diff --git a/doc/man1/wimlib-imagex-capture.1 b/doc/man1/wimlib-imagex-capture.1 index 8c18a277..98ff26b1 100644 --- a/doc/man1/wimlib-imagex-capture.1 +++ b/doc/man1/wimlib-imagex-capture.1 @@ -256,9 +256,10 @@ compression, as these are two different things. .TP \fB--solid-chunk-size\fR=\fISIZE\fR Like \fB--chunk-size\fR, but set the chunk size used in solid resources. The -default, assuming LZMS compression, is 64MiB (67108864). This option only has -an effect when \fB--solid\fR is also specified. For maximum compatibility with -the Microsoft implementation, do not use this option. +default, assuming LZMS compression, is 64MiB (67108864); this requires about +640MiB of memory per thread. This option only has an effect when \fB--solid\fR +is also specified. For maximum compatibility with the Microsoft implementation, +do not use this option. .TP \fB--solid-compress\fR=\fITYPE\fR[:\fILEVEL\fR] Like \fB--compress\fR, but set the compression type used in solid resources. diff --git a/include/wimlib.h b/include/wimlib.h index 47630bcf..9a5e4a3c 100644 --- a/include/wimlib.h +++ b/include/wimlib.h @@ -511,9 +511,11 @@ enum wimlib_compression_type { * later. Also, chunk sizes larger than 2^26 are not compatible * with the Microsoft implementation. * - * wimlib's LZMS compressor is currently faster but will usually not - * compress as much as the implementation in Microsoft's WIMGAPI - * (Windows 8.1). + * wimlib's LZMS compressor will, with the default settings, usually + * produce a better compression ratio, and work more quickly, than the + * implementation in Microsoft's WIMGAPI (as of Windows 8.1). There is + * limited support for non-default compression levels, but compression + * will be noticably faster if you choose a level < 35. * * If using wimlib_create_compressor() to create an LZMS compressor * directly, the @p max_block_size parameter may be any positive value -- 2.43.0