Contexte du benchmark
Choisir un algorithme de compression pour le déploiement logiciel est un compromis entre ratio, vitesse de compression, vitesse de décompression et mémoire consommée. Ce benchmark utilise 8 corpus de données réelles représentatifs des cas d'usage de Universal Installer V2.
Le meilleur algorithme dépend du corpus. Un algorithme qui excelle sur du code source peut être sous-optimal sur des binaires compilés. C'est pourquoi Universal Installer V2 choisit par blocs plutôt qu'avec un algorithme global.
Les 8 corpus de test
| Corpus | Taille | Type |
|---|---|---|
| Code source Python/JS | 1.2 GB | Texte structuré |
| Binaires Windows (EXE/DLL) | 800 MB | PE32/PE64 |
| Binaires Linux (ELF) | 600 MB | ELF64 |
| Images PNG/JPEG mixte | 2.1 GB | Déjà compressé |
| Logs applicatifs | 500 MB | Texte répétitif |
| Base de données SQLite | 1.5 GB | Données structurées |
| Archive ZIP (mixte) | 3.0 GB | Déjà compressé |
| Données médicales DICOM | 4.2 GB | Binaire semi-compressé |
Résultats — Ratio de compression
| Corpus | UXC v3 (auto) | Zstd-19 | Brotli-11 | LZ4-HC |
|---|---|---|---|---|
| Code Python/JS | 3.1× | 3.4× | 3.6× | 2.1× |
| Binaires Windows | 1.9× | 1.8× | 1.7× | 1.4× |
| Binaires Linux ELF | 2.1× | 2.0× | 1.9× | 1.5× |
| Images PNG/JPEG | 1.02× | 0.98× | 0.96× | 1.01× |
| Logs applicatifs | 8.2× | 7.9× | 8.7× | 4.1× |
| SQLite | 2.8× | 2.6× | 2.5× | 1.8× |
| ZIP (mixte) | 1.01× | 0.97× | 0.95× | 1.00× |
| DICOM médical | 1.3× | 1.2× | 1.2× | 1.1× |
UXC v3 en mode auto excelle sur les données déjà compressées (images, ZIP) car l'IA détecte l'entropie élevée et stocke en mode STORED (0 overhead). Sur le code source, Brotli-11 est légèrement supérieur mais 10× plus lent à comprimer.
Résultats — Vitesse
| Algorithme | Compression MB/s | Décompression MB/s | RAM peak |
|---|---|---|---|
| UXC v3 auto | 280 | 950 | 512 MB |
| Zstd niveau 19 | 45 | 1200 | 128 MB |
| Brotli niveau 11 | 8 | 800 | 64 MB |
| LZ4-HC | 380 | 3200 | 32 MB |
Recommandations pratiques
- Packaging de release (CI/CD, ratio prioritaire) → Zstd-19 ou UXC auto. Le temps de compression s'amortit sur N téléchargements.
- Archives internes (vitesse prioritaire) → LZ4-HC. Décompression 3× plus rapide, utile pour les caches locaux.
- Distribution web grand public → UXC auto. Évite de recomprimer les données déjà compressées.
- Données médicales DICOM → UXC auto ou Zstd-9 (compromis). Brotli-11 offre un meilleur ratio mais le temps de compression est prohibitif sur 4 GB.
Conclusion
UXC v3 en mode auto n'est pas systématiquement le meilleur algorithme en ratio brut — Brotli-11 le surpasse sur le code source, Zstd-19 sur les logs. Sa force est l'adaptation par bloc : il évite de dégrader le ratio sur les données déjà compressées (images, ZIP), un cas fréquent dans les packages réels. Pour un pipeline de déploiement mixte code + assets, UXC auto est le meilleur compromis global.