- [1] '--compress=none' for wimlib-imagex;
- '/compress none' or no option for ImageX.
-
- [2] '--compress=fast' or '--compress=XPRESS' for wimlib-imagex;
- '/compress fast' or no option for ImageX.
- Compression chunk size is 32768 (the default for XPRESS).
-
- [3] No compression option specified to wimlib-imagex; no known equivalent for
- WIMGAPI (ImageX uses XPRESS compression if no option specified).
- Compression chunk size is 32768 (the default for LZX).
-
- [4] '--compress=maximum' or '--compress=LZX' for wimlib-imagex;
- '/compress maximum' for ImageX.
- Compression chunk size is 32768 (the default for LZX).
-
- [5] '--compress=maximum --compress-slow' for wimlib-imagex;
- no known equivalent for WIMGAPI.
- Compression chunk size is 32768 (the default for LZX).
-
- [6] '--compress=recovery' or '--compress=lzms' for wimlib-imagex;
- no known way to create the equivalent with WIMGAPI.
- Compression chunk size is 131072 (the default for LZMS). Note: this
- compression type is not generally recommended due to its limited
- compatibility with the MS implementations.
-
- [7] '--compress=recovery --packed-streams' or
- '--compress=lzms --packed-streams' for wimlib-imagex;
- WIMCreateFile with WIM_COMPRESSION_LZMS and flag 0x20000000 for WIMGAPI.
- Compression chunk size in packed resources is 33554432 for wimlib,
- 67108864 for WIMGAPI. Note: this compression type is not generally
- recommended due to its limited compatibility with the MS implementations.
- Also, due to the large chunk size, wimlib uses about 500MB of memory per
- thread when compressing in this format.
-
-The above timings were done on Windows 8 (x86) so that side-by-side comparisons
-with the Microsoft implementation would be possible; however, wimlib may have
-even better performance on other operating systems such as Linux. The system
-had 2 CPUs and 2 GiB of memory available. All times were done with the page
-cache warmed, so the times primarily measure the performance of the compression
-algorithms and not the time to read data from disk, which presumably is similar
-in each implementation.
-
-Below are results for compressing the Canterbury corpus using wimlib (v1.6.1),
-WIMGAPI (Windows 8), and some other formats/programs, including the archive size
-only. Note that the Canterbury corpus includes no duplicate files or hard
-links, which WIM handles better than most other formats by storing only distinct
-data streams.
-
- =================================================
- | Format | Size (bytes) |
- =================================================
- | tar | 2,826,240 |
- | WIM (WIMGAPI, None) | 2,814,278 |
- | WIM (wimlib, None) | 2,813,856 |
- | WIM (WIMGAPI, XPRESS) | 825,410 |
- | WIM (wimlib, XPRESS) | 792,024 |
- | tar.gz (gzip, default) | 738,796 |
- | ZIP (Info-Zip, default) | 735,334 |
- | tar.gz (gzip, -9) | 733,971 |
- | ZIP (Info-Zip, -9) | 732,297 |
- | WIM (wimlib, LZX quick) | 722,196 |
- | WIM (WIMGAPI, LZX) | 651,766 |
- | WIM (wimlib, LZX normal) | 639,464 |
- | WIM (wimlib, LZX slow) | 633,144 |
- | WIM (wimlib, LZMS non-solid) | 590,252 |
- | tar.bz2 (bzip, default) | 565,008 |
- | tar.bz2 (bzip, -9) | 565,008 |
- | WIM (wimlib, LZMS solid) | 534,218 |
- | WIM (wimlib, LZMS solid, slow) | 529,904 |
- | WIM (WIMGAPI, LZMS solid) | 521,232 |
- | tar.xz (xz, default) | 486,916 |
- | tar.xz (xz, -9) | 486,904 |
- | 7z (7-zip, default) | 484,700 |
- | 7z (7-zip, -9) | 483,239 |
- =================================================
+ [1] '--compress=none' for wimlib-imagex; '/compress:none' for DISM.
+
+ [2] '--compress=XPRESS' for wimlib-imagex; '/compress:fast' for DISM.
+ Compression chunk size defaults to 32768 bytes in both cases.
+
+ [3] '--compress=XPRESS:80' for wimlib-imagex; no known equivalent for DISM.
+ Compression chunk size defaults to 32768 bytes.
+
+ [4] '--compress=LZX:20' for wimlib-imagex; no known equivalent for DISM.
+ Compression chunk size defaults to 32768 bytes.
+
+ [5] '--compress=LZX' or '--compress=LZX:50' or no option for wimlib-imagex;
+ '/compress:maximum' for DISM.
+ Compression chunk size defaults to 32768 bytes in both cases.
+
+ [6] '--compress=LZX:100' for wimlib-imagex; no known equivalent for DISM.
+ Compression chunk size defaults to 32768 bytes.
+
+ [7] '--compress=LZMS' for wimlib-imagex; no known equivalent for DISM.
+ Compression chunk size defaults to 131072 bytes.
+
+ [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 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
+ '--compress=XPRESS --chunk-size=4096'.
+
+ [10] '--wimboot --compress=XPRESS:80' for wimlib-imagex;
+ no known equivalent for DISM.
+ Same format as [9], but trying harder to get a good compression ratio.
+
+Note: wimlib-imagex's --compress option also accepts the "fast", "maximum", and
+"recovery" aliases for XPRESS, LZX, and LZMS, respectively.
+
+Testing environment:
+
+ - 64 bit binaries
+ - Windows 8.1 virtual machine running on Linux with VT-x
+ - 4 CPUs and 4 GiB memory given to virtual machine
+ - SSD-backed virtual disk
+ - All tests done with page cache warmed
+
+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.8.0), WIMGAPI (Windows 8.1), and some other
+formats/programs:
+
+ =====================================================
+ | Format | Size (bytes) |
+ =====================================================
+ | tar | 2,826,240 |
+ | WIM (WIMGAPI, None) | 2,814,254 |
+ | WIM (wimlib, None) | 2,814,216 |
+ | WIM (WIMGAPI, XPRESS) | 825,536 |
+ | WIM (wimlib, XPRESS) | 789,296 |
+ | tar.gz (gzip, default) | 738,796 |
+ | ZIP (Info-ZIP, default) | 735,334 |
+ | tar.gz (gzip, -9) | 733,971 |
+ | ZIP (Info-ZIP, -9) | 732,297 |
+ | WIM (wimlib, LZX quick) | 690,110 |
+ | WIM (WIMGAPI, LZX) | 651,866 |
+ | WIM (wimlib, LZX normal) | 624,634 |
+ | WIM (wimlib, LZX slow) | 620,728 |
+ | WIM (wimlib, LZMS non-solid) | 581,046 |
+ | tar.bz2 (bzip, default) | 565,008 |
+ | tar.bz2 (bzip, -9) | 565,008 |
+ | WIM (WIMGAPI, LZMS solid) | 521,366 |
+ | WIM (wimlib, LZMS solid) | 515,800 |
+ | tar.xz (xz, default) | 486,916 |
+ | tar.xz (xz, -9) | 486,904 |
+ | 7z (7-zip, default) | 484,700 |
+ | 7z (7-zip, -9) | 483,239 |
+ =====================================================
+
+Note: WIM does even better on directory trees containing duplicate files, which
+the Canterbury corpus doesn't have.