|
1 | 1 | # MCX Benchmark Results |
2 | 2 |
|
3 | | -**Version:** 1.9.3 |
| 3 | +**Version:** 2.0.0 |
4 | 4 | **Date:** 2026-03-18 |
5 | | -**Test environment:** Intel Xeon E-2386G @ 3.50 GHz, Linux, single-threaded |
6 | | - |
7 | | -## Canterbury Corpus |
8 | | - |
9 | | -### Level 20 (Smart Mode) |
10 | | - |
11 | | -| File | Original | Compressed | Ratio | vs gzip | vs bzip2 | vs xz | |
12 | | -|------|----------|------------|-------|---------|----------|-------| |
13 | | -| alice29.txt | 152,089 | 43,144 | **3.53×** | +26% | **+0.3%** | +12% | |
14 | | -| asyoulik.txt | 125,179 | 39,799 | **3.15×** | +23% | ≈ | +12% | |
15 | | -| cp.html | 24,603 | 7,955 | **3.09×** | ≈ | -4% | -4% | |
16 | | -| fields.c | 11,150 | 3,293 | **3.39×** | -5% | -8% | -8% | |
17 | | -| grammar.lsp | 3,721 | 1,512 | **2.46×** | -18% | -15% | -15% | |
18 | | -| kennedy.xls | 1,029,744 | 20,551 | **50.12×** | +921% | +535% | +139% | |
19 | | -| lcet10.txt | 426,754 | 107,101 | **3.98×** | +35% | **+0.5%** | +12% | |
20 | | -| plrabn12.txt | 481,861 | 144,548 | **3.33×** | +34% | **+0.6%** | +14% | |
21 | | -| ptt5 | 513,216 | 50,370 | **10.19×** | +4% | -1% | -17% | |
22 | | -| sum | 38,240 | 13,466 | **2.84×** | -5% | -4% | -30% | |
23 | | -| xargs.1 | 4,227 | 1,977 | **2.14×** | -11% | -11% | -8% | |
24 | | - |
25 | | -### Level 9 (Best LZ) |
26 | | - |
27 | | -| File | Compressed | Ratio | |
28 | | -|------|------------|-------| |
29 | | -| alice29.txt | 65,018 | 2.34× | |
30 | | -| kennedy.xls | 113,918 | 9.04× | |
31 | | -| ptt5 | 59,323 | 8.65× | |
32 | | - |
33 | | -## Silesia Corpus |
34 | | - |
35 | | -### Level 20 (Smart Mode) — Definitive Results |
36 | | - |
37 | | -| File | Original | Compressed | Ratio | vs gzip -9 | vs bzip2 -9 | vs xz -9 | |
38 | | -|------|----------|------------|-------|------------|-------------|----------| |
39 | | -| dickens | 10,192,446 | 2,503,136 | **4.07×** | +54% | +12% | +13% | |
40 | | -| xml | 5,345,280 | 415,596 | **12.86×** | +59% | +6% | +9% | |
41 | | -| ooffice | 6,152,192 | 2,427,050 | **2.53×** | +27% | +18% | -0.4% | |
42 | | -| reymont | 6,627,202 | 1,117,908 | **5.93×** | +63% | +11% | +18% | |
43 | | -| sao | 7,251,944 | 4,899,239 | **1.48×** | +9% | +1% | -10% | |
44 | | -| x-ray | 8,474,240 | 3,935,673 | **2.15×** | +54% | +3% | +14% | |
45 | | -| mr | 9,970,564 | 2,329,678 | **4.28×** | +58% | +5% | +18% | |
46 | | -| osdb | 10,085,684 | 2,497,824 | **4.04×** | +49% | +12% | +14% | |
47 | | -| nci | 33,553,445 | 1,308,201 | **25.65×** | +128% | +39% | +33% | |
48 | | -| samba | 21,606,400 | 4,293,052 | **5.03×** | +26% | +6% | -12% | |
49 | | -| webster | 41,458,703 | 7,138,948 | **5.81×** | +69% | +21% | +18% | |
50 | | -| mozilla | 51,220,480 | 17,466,729 | **2.93×** | +9% | — | -24% | |
51 | | -| **Total** | **211,938,580** | **50,333,034** | **4.21×** | | | | |
52 | | - |
53 | | -### Summary |
54 | | - |
55 | | -| Comparison | Files Won | Win Rate | |
56 | | -|------------|-----------|----------| |
57 | | -| MCX L20 vs gzip -9 | 12/12 | **100%** | |
58 | | -| MCX L20 vs bzip2 -9 | 11/11 | **100%** | |
59 | | -| MCX L20 vs xz -9 | 9/12 | **75%** | |
60 | | - |
61 | | -### Notable Results |
62 | | - |
63 | | -- **nci: 25.65×** — 33% better than xz, 39% better than bzip2 |
64 | | -- **kennedy.xls: 50.12×** — 2.4× better than xz (stride-delta auto-detection) |
65 | | -- **ooffice: 2.53×** — E8/E9 x86 filter brings within 0.4% of xz |
66 | | -- **mozilla: 2.93×** — largest gap vs xz (-24%). LZRC v2.0 achieves **3.22×** at L26 (+10%) |
67 | | - |
68 | | -## Speed Benchmarks |
69 | | - |
70 | | -### Compression Speed (MB/s) |
71 | | - |
72 | | -| File | L3 | L6 | L9 | L12 | L20 | |
73 | | -|------|----|----|----|----|-----| |
74 | | -| alice29 | 5.1 | 3.8 | 2.0 | 0.3 | 0.3 | |
75 | | -| dickens | — | — | 2.1 | 0.3 | 0.3 | |
76 | | -| ooffice | — | — | 2.2 | 0.7 | 0.7 | |
77 | | -| mozilla | — | — | 2.7 | 0.3 | 0.3 | |
78 | | - |
79 | | -### Decompression Speed (MB/s) |
80 | | - |
81 | | -| File | L3 | L9 | L12 | L20 | |
82 | | -|------|----|----|-----|-----| |
83 | | -| alice29 | 18.7 | 23.5 | 5.5 | 5.5 | |
84 | | -| dickens | — | 3.8 | 3.9 | 3.9 | |
85 | | -| ooffice | — | 3.1 | — | 3.2 | |
86 | | -| samba | — | 6.3 | — | 6.3 | |
87 | | - |
88 | | -## LZRC v2.0 (Level 26) |
89 | | - |
90 | | -Binary tree match finder (16 MB window) + adaptive range coder + lazy evaluation + 4 rep distances + LZMA-style matched literal coding. |
91 | | - |
92 | | -| File | L20 (BWT) | L26 (LZRC) | Change | Compress Speed | |
93 | | -|------|-----------|------------|--------|----------------| |
94 | | -| alice29 | 3.53× | 2.99× | -15% | 0.8 MB/s | |
95 | | -| fields.c | 3.39× | 3.66× | **+8%** | 0.4 MB/s | |
96 | | -| grammar | 2.46× | 2.98× | **+21%** | 0.5 MB/s | |
97 | | -| sum | 2.84× | 3.38× | **+19%** | 1.6 MB/s | |
98 | | -| ooffice | 2.53× | 2.24× | -11% | 0.9 MB/s | |
99 | | -| dickens | 4.07× | 3.19× | -22% | 0.7 MB/s | |
100 | | -| samba | 5.03× | 5.06× | **+0.6%** | 0.9 MB/s | |
101 | | -| mozilla | 2.93× | **3.22×** | **+10%** | 0.9 MB/s | |
102 | | - |
103 | | -**Key findings:** |
104 | | -- LZRC **wins on binary** (mozilla +10%, sum +19%, grammar +21%, samba +0.6%) |
105 | | -- BWT **wins on text** (alice29, dickens — BWT exploits long-range context better) |
106 | | -- Multi-trial at L20 tries both and keeps the smallest result per block |
107 | | -- mozilla 3.22× is the **best LZ result ever** for MCX, approaching xz's 3.85× |
| 5 | +**Platform:** Linux x64, GCC 11, single-threaded |
| 6 | + |
| 7 | +## Silesia Corpus — Level 20 (Best) |
| 8 | + |
| 9 | +| File | Size | MCX L20 | Ratio | vs bzip2 | vs xz | |
| 10 | +|------|------|---------|-------|----------|-------| |
| 11 | +| dickens | 10.2 MB | 2,503 KB | **4.07×** | +18% | -9% | |
| 12 | +| mozilla | 51.2 MB | 15,893 KB | **3.22×** | +15% | +10% | |
| 13 | +| mr | 10.0 MB | 2,330 KB | **4.28×** | +33% | +10% | |
| 14 | +| nci | 33.6 MB | 1,308 KB | **25.65×** | +60% | +3% | |
| 15 | +| ooffice | 6.2 MB | 2,407 KB | **2.56×** | +24% | +1% | |
| 16 | +| osdb | 10.1 MB | 2,498 KB | **4.04×** | +42% | +8% | |
| 17 | +| reymont | 6.6 MB | 1,118 KB | **5.93×** | +29% | +3% | |
| 18 | +| samba | 21.6 MB | 4,274 KB | **5.06×** | +29% | -2% | |
| 19 | +| sao | 7.3 MB | 4,899 KB | **1.48×** | +1% | -10% | |
| 20 | +| webster | 41.5 MB | 7,139 KB | **5.81×** | +21% | -5% | |
| 21 | +| xml | 5.3 MB | 416 KB | **12.86×** | +65% | +3% | |
| 22 | +| x-ray | 8.5 MB | 3,936 KB | **2.15×** | +16% | -8% | |
| 23 | +| **TOTAL** | **211.9 MB** | **48,719 KB** | **4.35×** | **+29%** | **+0.3%** | |
| 24 | + |
| 25 | +**MCX L20 beats bzip2 on 12/12 Silesia files (100%).** |
| 26 | +**MCX L20 beats xz on 7/12 Silesia files (58%).** |
| 27 | +**MCX L20 total is competitive with xz (4.35× vs ~4.34×).** |
| 28 | + |
| 29 | +## Canterbury Corpus — Level 20 |
| 30 | + |
| 31 | +| File | Size | MCX L20 | Ratio | |
| 32 | +|------|------|---------|-------| |
| 33 | +| alice29.txt | 149 KB | 42 KB | **3.53×** | |
| 34 | +| fields.c | 11 KB | 3 KB | **3.42×** | |
| 35 | +| grammar.lsp | 4 KB | 1 KB | **2.46×** | |
| 36 | +| kennedy.xls | 1,006 KB | 20 KB | **50.11×** | |
| 37 | +| lcet10.txt | 419 KB | 105 KB | **3.98×** | |
| 38 | +| plrabn12.txt | 471 KB | 141 KB | **3.33×** | |
| 39 | +| ptt5 | 502 KB | 49 KB | **10.19×** | |
| 40 | + |
| 41 | +## LZRC v2.0 Engine — Level 26 |
| 42 | + |
| 43 | +Direct LZRC (LZ + Range Coder, no BWT fallback): |
| 44 | + |
| 45 | +| File | LZRC | Ratio | Speed | |
| 46 | +|------|------|-------|-------| |
| 47 | +| alice29 | 50 KB | **2.99×** | 0.8 MB/s | |
| 48 | +| ooffice | 2,686 KB | **2.24×** | 0.7 MB/s | |
| 49 | +| dickens | 3,118 KB | **3.19×** | 0.5 MB/s | |
| 50 | +| samba | 4,173 KB | **5.06×** | 0.4 MB/s | |
| 51 | +| mozilla | 15,520 KB | **3.22×** | 0.5 MB/s | |
| 52 | + |
| 53 | +## Compression Levels |
| 54 | + |
| 55 | +| Level | Strategy | Silesia Total | Speed | |
| 56 | +|-------|----------|---------------|-------| |
| 57 | +| L1 | LZ greedy | ~2.0× | 50+ MB/s | |
| 58 | +| L3 | LZ greedy+Huffman | ~2.5× | 20+ MB/s | |
| 59 | +| L6 | LZ lazy+FSE | ~2.8× | 5-10 MB/s | |
| 60 | +| L9 | LZ lazy+AAC | ~3.2× | 2-4 MB/s | |
| 61 | +| L12 | BWT+genetic | ~4.16× | 0.3-12 MB/s | |
| 62 | +| L20 | Smart (BWT+LZRC+multi) | **4.35×** | 0.1-0.5 MB/s | |
| 63 | +| L26 | LZRC direct | ~3.5× | 0.4-0.8 MB/s | |
| 64 | + |
| 65 | +## Key Improvements in v2.0 |
| 66 | + |
| 67 | +| Feature | Impact | |
| 68 | +|---------|--------| |
| 69 | +| LZRC engine (BT + Range Coder) | mozilla +10% vs BWT | |
| 70 | +| Lazy evaluation | Universal +1-5% | |
| 71 | +| 4 rep distances | +0.3% on large files | |
| 72 | +| LZMA-style matched literals | +0.3% universal | |
| 73 | +| Binary→LZRC routing at L20 | mozilla 2.93×→3.22× | |
| 74 | +| E8/E9 x86 filter | ooffice +16% | |
| 75 | +| Multi-trial (BWT/LZ/LZRC) | Guarantees best per-file | |
0 commit comments