LZMA2 [std] compression ratio is worse than vanilla 7-Zip under identical extreme settings (both v26.02) when source data significantly exceeds dictionary size
Describe the bug
When compressing files using the 7z format with the LZMA2 [std] method and highly customized extreme parameters (1536MB dictionary, 273 word size, solid mode, and additional switches -mtc- -mta- -mtm -mf), when the total source data size significantly exceeds the dictionary size, 7-Zip ZS produces an archive that is larger than vanilla 7-Zip (from 7-zip.org) using the exact same parameters.
Actual Evidence
Below is a side-by-side comparison of the same source data compressed with both versions. The exact parameters used by both are:
- Format:
7z - Method:
LZMA2 [std] - Level:
9 - Dictionary:
1536 MB - Word size:
273 - Solid compression:
On - Threads:
3 - Additional switches:
-mtc- -mta- -mtm -mf
| Version | File Size (bytes) |
|---|---|
| 7-Zip ZS (v26.02-v1.5.7-R2) | 2,099,057,752 |
| Vanilla 7-Zip (v26.02) | 2,098,683,007 |
Difference: 7-Zip ZS is 374,745 bytes (about 0.36 MB) larger than vanilla 7-Zip.
Expected behavior
The archive sizes from both versions should be identical, given that the same algorithm, level, and extreme parameters are used.
Actual behavior
The archive from 7-Zip ZS is larger than the one from vanilla 7-Zip. Upon inspecting both archives' properties (Info), the method is shown as LZMA2:1536m in both, confirming that the algorithm and dictionary size are identical, yet the compression ratio still differs.
Possible Causes
This may be related to:
- Compression Level Mapping Mismatch: The mapping of compression levels (0–9) in 7-Zip ZS may differ from vanilla 7-Zip. Internal parameters may shift even at Level 9.
Environment
- 7-Zip ZS version: v26.02-v1.5.7-R2
- Vanilla 7-Zip version: v26.02
- OS: Windows 10 64-bit
Additional context
This issue affects users who rely on 7-Zip ZS for its additional codecs but expect the standard LZMA2 behavior to be identical to the official version. This discrepancy is highlighted when using extreme parameters (1.5GB dict, 273 word size).
Currently, this phenomenon has only been observed when the total source data size significantly exceeds the dictionary size. It has not yet been verified when the source data is smaller than the dictionary size, so it is unclear whether the same issue occurs in that scenario.
Source: mcmilk/7-Zip-zstd