- ZIP, 7Z (LZMA2) e ZSTD hanno prestazioni diverse a seconda dell'obiettivo: compatibilità, rapporto o velocità di decompressione.
- I dati mostrano che ZSTD è leader nella decompressione e molto competitivo nel rapporto a livelli medi.
- Per un'archiviazione estrema, utilizzare Zpaq; per un'archiviazione desktop, utilizzare 7Z; per un'archiviazione universale, utilizzare ZIP o ZIP+ZSTD (metodo 93).
Scegli tra ZIP, 7Z e ZSTD Sembra un problema di poco conto finché non si ha bisogno di distribuire applicazioni, inviare backup giornalieri o ridurre i costi. immagazzinamento e larghezza di banda (vedi come comprimere e decomprimere i file). In pratica, la decisione modifica i tempi di consegna, l'utilizzo di CPU/RAM e persino la compatibilità con strumenti e sistemi di terze parti.
Dopo aver esaminato diversi benchmark con dati reali e contesti molto diversi, da un Set di dati .NET da 5,4 GB per le distribuzioni, passando attraverso un corpus di testo di wikipedia da 1 GB, alle immagini dei contenitori e un 28,7 GB binario— il quadro completo rivela quando è opportuno dare priorità al rapporto, dove il velocità di decompressione e quali implicazioni di compatibilità ha (ZIP classico, ZIP con ZSTD, 7Z con LZMA2 o con codec alternativi, ecc.).
Cosa confrontiamo e perché è importante
Abbiamo analizzato le famiglie più utilizzate: ZIP (Sgonfiare), 7Z (LZMA/LZMA2) y ZSTDInoltre, entrano nella conversazione Brotli, XZ, bzip2, zpaq e LZ4, perché nella vita reale non si tratta quasi mai di un "faccia a faccia" puro. Nelle distribuzioni .NET, ad esempio, l'equilibrio tra compatibilità, rapporto e velocità Il suo peso è diverso rispetto ai backup di massa o ai pacchetti di distribuzione degli imballaggi.
Regole di contesto: se cerchi tempo minimo di distribuzione e supporto onnipresente, non scegli lo stesso di quando provi ridurre al minimo lo spazio di archiviazione di 15 copie di backup (e dividere i file compressi) e ottimizzare i costi di uscita. La buona notizia è che ora ci sono cifre comparabili e modelli chiari per aiutarti a prendere decisioni consapevoli.
Come funziona ciascun formato (e cosa significa in pratica)
- ZIP (Sgonfiare) Combina LZ77 e Huffman; è il veterano, onnipresente e completamente compatibile. Di solito non vince in termini di rapporto di compressione o velocità rispetto alle opzioni moderne, ma si apre ovunque (vedi come gestire le estensioni del browser) e la sua implementazione è stabile e ben nota. Il tradizionale ZIP (metodo 8) presentava limitazioni storiche, sebbene i compressori moderni superino molti di questi vincoli.
- 7Z Si basa principalmente su LZMA/LZMA2, con un ottimo rapporto e strumenti maturi. Inoltre, 7-Zip parallelizza bene e il suo "valori predefiniti ragionevoli» ti fa sentire agile. È un standard de facto in ambienti desktop e di sviluppo, con ampio supporto in Windows, Linux e macOS (a volte utilizzando utilità esterne).
- Standard Z (ZSTD), creado Facebook (2015), si distingue per decompressione estremamente rapida e una palette di livelli molto ampia (1–22). Il suo obiettivo è di avere prestazioni pari o superiori a quelle di Deflate e di avvicinarsi a quelle di LZMA in termini di rapporto, con un'esecuzione generalmente più veloce. Lo vediamo integrato nei kernel BSD/Linux, compressione dei pacchetti (ad esempio, Arch Linux utilizza zstd livello 20, decomprimendo 14 volte più velocemente di XZ con solo +0,8% di dimensione) e sempre più presente nelle pipeline CI/CD.
Altri attori che vale la pena conoscere
- Brotli, progettato per il Web, comprime meglio di gzip il contenuto testuale e trae vantaggio dall' codifica dei contenuti dei browser. Il suo benchmark di compressione è single-threaded, il che altera i confronti temporali. vero orologio da parete se si ha a che fare con codec multi-thread, ma ci sono implementazioni parallele. Negli ambienti server, il consumo energetico CPU totale (utente+sistema) è più rilevante dell'orologio da parete.
- XZ Migliora LZMA e offre un ottimo rapporto a scapito di tempi di compressione elevatiPer i binari di grandi dimensioni, può essere competitivo, ma la sua velocità di decompressione spesso è inferiore a ZSTD e 7Z. Concorrenza multithread e parametro -e (estremo) Migliorano un po' la foto, anche se non fanno miracoli.
- bzip2/pbzip2 Hanno un rapporto di bilanciamento e CPU più o meno al centro della scheda. Con pbzip2 si ottiene il parallelismo. Tuttavia, per molti casi moderni ZSTD e 7Z offrono migliori compromessi globale.
- zpaq è lui "veicolo fuoristrada con il rapporto massimo» con compressione incrementale di tipo journaling; il suo obiettivo è quello di comprimere i byte, sacrificando volentieri il velocità di decompressionePer i backup a freddo questa potrebbe essere una buona idea; per un uso generale, non lo è.
Benchmark con dati: testo, binari di grandi dimensioni e distribuzioni

1) Dataset testuale (Wikipedia 1 GB)
In un confronto di ZIP (tramite 7zip), 7zip, XZ, Brotli, Zstandard, zpaq oltre 1 GB di testo di Wikipedia, sono stati rappresentati graficamente tempo vs dimensione a ogni livello. L'autore avverte: prove non scientifiche e Riferimento monofilamento Brotli penalizza i tempi "reali". Nel calcolo utente+sistema, la situazione migliora per Brotli; ZSTD appare molto competitivo, decomprimendo molto velocemente e con rapporti nell'orbita XZ/7zip ad alti stress.
Risultati principali: ZIP è rimasto indietro nel rapporto di compressione e nel tempo; 7zip avanza con strumenti più sofisticati e multithreading; XZ migliora il rapporto ma decomprime più lentamente che ZSTD; ZSTD bilancia in modo fantastico quando si aumenta lo sforzo; e zpaq raggiunge rapporti massimi dedicando molto tempo, soprattutto nella decompressione.
2) Test di "compressione massima" di PeaZip (Windows, i7-8565U)
Con PeaZip/WinRAR, file di input 303,0 MB e cinque ripetizioni per test, questi erano i valori medi (dimensioni in MB; volte in s):
| Formato | Dimensioni | Rapporto | compressione | estrazione |
|---|---|---|---|---|
| RAR migliore (WinRar) | 78,1 | 25,78% | 28,5 | 1,8 |
| 7Z ultra (LZMA2) | 71,2 | 23,50% | 137,0 | 3,4 |
| 7Z Ultra Brotli | 75,1 | 24,79% | 208,0 | 0,8 |
| 7Z ultra Zstd | 75,3 | 24,85% | 300,0 | 1,2 |
| 7Z ultra BZip2 | 80,6 | 26,60% | 81,0 | 7,1 |
| ZPAQ ultra | 57,6 | 19,01% | 359,0 | 358,0 |
Conclusioni: ZPAQ Vince in rapporto puro ma è molto lento, anche durante l'estrazione. 7Z (LZMA2) offre un buon rapporto, con un'estrazione ragionevole. Utilizzando Brotli/ZSTD entro 7Z, il mosche di estrazione (Brotli ancora di più), in cambio di compressioni più lunghe rispetto a LZMA2 in ultra. RAR dà priorità velocità di compressione sacrificando un certo rapporto, e se hai bisogno di sicurezza, puoi vedere come mettere le password sui file compressi.
3) Enorme binario da 28,7 GB (Linux, Ryzen 5 5600G)
Su un file di 28,65–28,7 GB, l'obiettivo era comprimere il più possibile e confrontare rapporti e tempi con xz, pbzip2, 7z e zstd:
- xz -9e -T12: 12,6 GiB in ~15m49s (≈ 44,0%)
- pbzip2 -9: 13,07 GiB in ~4m29s (≈ 44,55%)
- 7z -mx=9: 12,9 GiB in ~16m43s (≈ 43,98%)
- zstd –ultra -22 -T12: 12,48 GiB in ~19m48s (≈ 43,57%)
In "massima compressione", ZSTD ha vinto di misura, ma ci è voluto più tempo. pbzip2 sorpreso in velocità con un rapporto ravvicinato. Questo caso dimostra che, su binari molto grandi, le differenze assolute in GB pesano quanto i minuti di CPU, ed è consigliabile quantificare entrambi.
4) ZIP di gioco (EU4) e conversione da tar+brotli a ZIP con ZSTD
Un caso reale: i salvataggi di EU4 arrivano come file ZIP leggermente compressi. Abbiamo provato a estrarli e ricomprimerli: ricomprimere Risparmia circa il 17%. Modificando il codec all'interno del file ZIP, i numeri per livello erano:
| Metodo | Riduzione | Tempo (ms) |
|---|---|---|
| zstd (3) | 40% | 463 |
| zstd (5) | 45% | 755 |
| zstd (7) | 50% | 1256 |
| panini (4) | 32% | 1481 |
| panini (9) | 54% | 4210 |
Inoltre, Carichi utili Wasm per la transcodifica: ZSTD ~215 kB (136 kB solo se codificatore), Brotli ~683 kB. Nell'analisi, conteggio del tempo di recupero dalla cache (il codifica dei contenuti Il browser Brotli non è gratuito), ZSTD e Brotli erano molto simili: Brotli analizza un po' più velocemente non decomprimendo nello spazio utente; ZSTD Trae vantaggio dal fatto di non toccare la codifica del contenuto e di leggere più facilmente dal disco.
Con caricamento a 30 Mb/s, integrazione di transcodifica + trasferimento in un tipico ZIP da 7,7 MB: i 2,05; ZSTD-3 1,70; ZSTD-5 1,88; ZSTD-7 2,28 s. La raccomandazione pratica si è orientata verso ZSTD livello 7 per risparmiare spazio di archiviazione (quando si paga per il bucket), anche se il livello 3 è allettante se si dà priorità alla latenza.
5) Distribuzioni .NET (pubblicazione da 5,4 GB)
In uno scenario di distribuzione di un'applicazione .NET con 5,4 GB di output (un mix di elementi autonomi e dipendenti dal framework), la linea guida pratica è chiara: scegli per obiettivoSe si punta alla compatibilità universale, utilizzare il classico ZIP; se il collo di bottiglia è decompressione e velocità, ZSTD è forte; se vuoi alto rapporto Con CLI e strumenti consolidati, 7Z con LZMA2 è ancora una soluzione vincente.
Decompressione: il fattore più evidente nell'esperienza
Diversi test indipendenti indicano ZSTD come classe separata in decompressione. Nella panchina testuale, quando si guarda utente+sys Si comprende perché ZSTD è ottimale per la compressione del file system (vedere come disabilitare la compressione automatica) e il confezionamento dei pacchetti: la lettura è veloce e il costo della CPU è basso. 7zip Offre un'esperienza molto buona e la differenza con XZ è spiegata più dalle utilità e dal multithreading che dalla magia del codec.
CAP Ha sorpreso con le metriche di decompressione utente+sys, essendo migliori del previsto; se il tuo pubblico ha macchine modeste o flussi di lavoro in cui l'estrazione rapida è la priorità, non scartarlo senza misurarlo. ZPAQ, da parte sua, ci ricorda il suo profilo: rapporto incredibile, ma tempi di estrazione molto elevati, adatto per copie a freddo.
Casi d'uso: come decidere con i dati (RAM, tempo, rapporto e costo)
In uno scenario di piattaforma container in cui è necessario eseguire backup giornalieri Per 30-100 container, il budget operativo è il fattore più importante. È stato proposto un sistema di punteggio pragmatico:
- RAM: Per ottenere un punteggio pari a 5, è necessario ottenere una compressione di 200 MB e una decompressione di 100 MB; per ogni 50 MB o più, sottrarre 1 punto.
- Tempo: Finestra giornaliera di 3 ore per comprimere tutto; per contenitore, 6-1,8 minuti. Sulla scala, >120 s segna 0, ogni -20 s aggiunge 1, <10 s è 5 punti in decompressione.
- Rapporto: Con oggetti da ~1,6 GB (ad esempio MariaDB+PHP+WordPress) e uno spazio di archiviazione di ~$6/TB su backend di tipo Backblaze/E2, puntare a ≥4:1 aiuta a ridurre i risultati. costo di uscita (attenzione ad AWS a $ 0,09/GB in uscita).
Livelli di prova, ZSTD livello 3 ottenuto ~3,5:1 in ~3 s con 207 MB di RAM; Brotli livello 6 raggiunto ~4,3:1 in ~30 s con un buon profilo RAM. Messa a punto Sintonizzazione ZSTD (strategia, searchLog, targetLength, minMatch) non è stato migliorato abbastanza senza penalizzare il tempo o la memoria; in quella particolare analisi, Brotli livello 6 è risultato il preferito. Curiosamente, Brotli livello 4 Utilizzava più memoria di 3/5 ma raggiungeva il rapporto di livello 5 nella metà del tempo, un'opzione molto interessante se 13 MB di spazio di archiviazione aggiuntivo sono accessibili.
Se l'obiettivo cambia (ad esempio, distribuzioni rapide o letture intensive), i pesi variano e ZSTD tende ad essere la scelta più equilibrata grazie alla sua decompressione lampo e rapporti decenti a livelli medi.
Compatibilità, supporto e ruolo di ZIP con ZSTD
Qualcosa di fondamentale: lo standard ZIP incorporato ZSTD (metodo 93) dalla specifica 6.3.8 (2020). Ciò consente "CAP di una vita» con un codec moderno. Come lo supporta l'ecosistema? Oggi, di Windows Explorer Non crea né estrae ZIP con ZSTD; il principale 7-Zip lo sta integrando e ci sono già fork funzionanti. Su Linux, ci sono fork di p7zip. La situazione sta migliorando, ma ci sono ancora attriti.
Se usi Total Commander, puoi abilitare la lettura 7z con ZSTD sostituendo TCLZMA64.DLL per versioni compatibili (ad esempio, il pacchetto TotalCmd.7z di 7-Zip ZS). Per creare file 7z con ZSTD all'interno di TC, i plugin più vecchi non sempre rispettano il codec scelto e ripiegano su LZMA; è meglio usare 7-Zip ZS completo o il Plugin di codec su un'installazione 7-Zip esistente. Con 7-Zip ZS avrai la compressione/scaricamento di Brotli, LZ4, Lucertola, ZSTD all'interno del contenitore 7z e movimentazione CAP+ZSTD. Verificare con 7z i quali codec sono attivi.
Nei browser e nelle pipeline web, il codifica dei contenuti Brotli sembra un "totale omaggio", ma ci sono delle sfumature: middleware, proxy e framework (ad esempio discrepanze tra la modalità debug/produzione in Next.js) possono ripetere la compressione o aggiungere latenza. Anche la distribuzione di contenuti precompressi non è sempre semplice (Cloudflare Pages non lo supporta di default). In diversi casi reali, la sostituzione dei flussi con ZSTD in ZIP e la decompressione nello spazio utente hanno contribuito meno dipendenze dell'ambiente e risultati equivalenti o migliori.
Parametri utili e livelli consigliati
En ZSTD, i livelli 3, 5 e 7 offrono buoni punti operativi. Uno studio che incrocia transcodifica e trasferimento con 30 Mb/s ha mostrato Livello 3 come il più veloce end-to-end, ma Livello 7 Ho salvato immagazzinamento (in EU4, il 12,5% in meno di 5 e il 25% in meno di 3). AWS Athena documenta le preferenze per livelli 6–9 quando 3 non viene utilizzato di default, il che concorda con tale scoperta.
La tentazione di attivarsi abbinamento a lunga distanza È reale, ma attenzione: esigerai che chi decomprime abbia il stessa memoria che ha compresso. Nelle distribuzioni e applicazioni cliente, tale requisito potrebbe essere irrealizzabile. Meglio mantenere finestre e tavoli entro budget ragionevoli.
En Brotli, l'impostazione della stella è solitamente la livello. Modifica LGwin può aumentare la memoria senza grandi guadagni se si è già in alto. L'osservazione che Livello 4 abbinare il rapporto 5 nella metà del tempo, al costo di una quantità leggermente maggiore di RAM, è oro quando vuoi latenza inferiore senza penalizzare troppo le dimensioni.
a XZ, la bandiera -e applicare varianti più lente del preset cercando un po' più di rapporto. Le tabelle del manuale ricordano che la memoria del compressore aumenta, ma il decompressore rimane. Tuttavia, rispetto a ZSTD, XZ di solito perde in decompressione quando si desidera aprire i pacchi ad alta velocità.
Se dipendi da Zip classico ma vuoi la massima velocità di Deflate, librerie come libdeflate Migliorano notevolmente la produttività rispetto a zlib. Nell'ecosistema Rust, zip-rs Non è ancora semplice modificare i backend durante la creazione di ZIP, quindi quel percorso potrebbe non essere disponibile senza ulteriore lavoro.
Scrittore appassionato del mondo dei byte e della tecnologia in generale. Adoro condividere le mie conoscenze attraverso la scrittura, ed è quello che farò in questo blog, mostrarti tutte le cose più interessanti su gadget, software, hardware, tendenze tecnologiche e altro ancora. Il mio obiettivo è aiutarti a navigare nel mondo digitale in modo semplice e divertente.