Miért képes a Zip az egyes fájlokat jobban tömöríteni, mint az azonos tartalmú több fájlokat?
Lehetővé teszi, hogy tömörítsük fájljainkat, hogy könnyebben megoszthassuk és / vagy továbbíthassuk az elektronikus életünket, de néha páratlan vagy váratlan méretezési eredményeket láthatunk, miután tömörítjük őket. Miért van az, hogy? A mai SuperUser Q&A postai válaszok egy zavaros olvasó kérdéseire vonatkoznak.
A mai Kérdések és válaszok munkamenet a Jóvagyon - a Stack Exchange alosztályának, a közösség által vezérelt Q&A webhelyek csoportjának köszönhetően..
Fénykép jóvoltából Jean-Etienne Minh-Duy Poirrier (Flickr).
A kérdés
A SuperUser olvasó az sixtyfootersdude tudni akarja, hogy a zip hogyan tudja tömöríteni az egyes fájlokat, mint az azonos típusú tartalmú több fájl:
Tegyük fel, hogy 10 000 XML fájlom van, és szeretném elküldeni őket egy barátnak. Küldésük előtt szeretném tömöríteni őket.
1. módszer: Ne tömörítse őket
Eredmények:
2. módszer: Minden fájl külön-külön rögzíthető és elküldje neki 10.000 csatolt XML-fájlt
Parancs:
Eredmények:
3. módszer: Egyetlen zip fájl létrehozása, amely az összes 10 000 XML fájlt tartalmazza
Parancs:
Eredmények:
4. módszer: A fájlok összekapcsolása egyetlen fájlba és a Zip It
Parancs:
Eredmények:
Kérdések
- Miért kapok ilyen drámai jobb eredményt, ha csak egyetlen fájlt használok?
- Azt vártam, hogy drasztikusan jobb eredményeket kapok a 3. módszer helyett a 2. módszer mellett, de nem. Miért ez?
- Ez a viselkedés a zipre jellemző? Ha megpróbálom a Gzipet használni, más eredményeket kapnék?
További információ
Meta adatok
A kapott válaszok egyike arra utal, hogy a különbség a zip fájlban tárolt rendszer metaadatok. Nem hiszem, hogy ez így lenne. A teszteléshez a következőket tettem:
A kapott zip fájl 1,4 MB. Ez azt jelenti, hogy még mindig körülbelül tíz MB megmagyarázhatatlan tér van.
Miért képes a zip jobban tömöríteni az egyes fájlokat, mint az azonos típusú tartalmú több fájl?
A válasz
A SuperUser közreműködői Alan Shutko és Aganju válaszolnak számunkra. Először fel, Alan Shutko:
A zip tömörítés a tömörítendő adatok ismétlődő mintáin alapul, és a tömörítés jobb lesz, minél hosszabb a fájl, mivel egyre hosszabb mintákat talál és használhat.
Egyszerűsített, ha tömörít egy fájlt, a (rövid) kódokat (hosszabb) mintákat tartalmazó térképeket minden egyes zip fájl tartalmazza; ha egy hosszú fájlt csatol, a szótár újrafelhasználásra kerül, és még hatékonyabbá válik az összes tartalomban.
Ha a fájlok még egy kicsit hasonlóak (mint a szöveg mindig), a „szótár” újrafelhasználása nagyon hatékony lesz, és az eredmény sokkal kisebb teljes zip-fájl..
Az Aganju válaszát követi:
A zipben minden fájl külön tömörítve van. Az ellenkezője szilárd tömörítés, vagyis a fájlok tömörítve vannak. A 7-zip és a Rar alapértelmezés szerint szilárd tömörítést használ. A Gzip és a Bzip2 nem képes több fájlt tömöríteni, így a Tar először használ, ugyanolyan hatással, mint a tömörítés.
Ahogy az xml fájlok hasonló szerkezetűek (és valószínűleg hasonló tartalmak), akkor a fájlok tömörítése esetén a tömörítés magasabb lesz.
Például, ha egy fájl tartalmazza a „
”És a kompresszor már megtalálta ezt a karakterláncot egy másik fájlban, és kicseréli azt az előző mérkőzésre mutató kis mutatóval. Ha a kompresszor nem használ tömör tömörítést, akkor a karakterlánc első előfordulása a fájlban a szó szerinti, ami nagyobb.
Van valami, amit hozzá kell adni a magyarázathoz? Kikapcsolja a megjegyzéseket. Szeretne további válaszokat olvasni más tech-savvy Stack Exchange felhasználóktól? Nézze meg a teljes beszélgetés szálát itt.