Зашто је Зип способан компримирати појединачне датотеке боље од више датотека с истим садржајем?
Бити у стању да компримујемо наше фајлове тако да је лакше да их делимо и / или транспортујемо, могу учинити наш електронски живот много лакшим, али понекад можемо видети чудне или неочекиване резултате димензионисања након што их компримујемо. Зашто је то? Данашња постова за питања и одговоре СуперУсер имају одговоре на конфузна питања читатеља.
Данашња сесија питања и одговора долази нам захваљујући СуперУсер-у - подјела Стацк Екцханге-а, груписане од стране заједнице веб-локација за питања и одговоре.
Фотографија љубазношћу Јеан-Етиенне Минх-Дуи Поирриер (Флицкр).
Питање
СуперУсер читач сиктифоотерсдуде жели да зна зашто зип може компримирати појединачне датотеке боље од више датотека с истом врстом садржаја:
Претпоставимо да имам 10.000 КСМЛ датотека и желим их послати пријатељу. Пре него што их пошаљем, желео бих да их компримујем.
Метод 1: Не компримирајте их
Резултати:
Метод 2: Отпустите сваку датотеку одвојено и пошаљите му 10.000 зипних КСМЛ датотека
Команда:
Резултати:
3. метод: Креирајте једну Зип датотеку која садржи свих 10,000 КСМЛ датотека
Команда:
Резултати:
Метод 4: Повежите датотеке у једну датотеку и зипајте је
Команда:
Резултати:
Питања
- Зашто добијам тако драматично боље резултате када само зипујем једну датотеку?
- Очекивао сам да ћу добити драстично боље резултате користећи метод 3, а не метод 2, али не. Зашто је ово?
- Да ли је ово понашање специфично за зип? Ако бих покушао да користим Гзип, да ли бих добио различите резултате?
Додатне информације
Мета Дата
Један од понуђених одговора сугерише да је разлика у системским мета подацима који су похрањени у зип датотеци. Не верујем да је то случај. Да бих је тестирао, урадио сам следеће:
Резултујућа зип датотека је 1.4 МБ. То значи да још увијек има око 10 МБ необјашњеног простора.
Зашто је зип способан компримирати појединачне датотеке боље од више датотека с истом врстом садржаја?
Одговор
Сурадници СуперУсер Алан Схутко и Агању имају одговор за нас. Прво горе, Алан Схутко:
Зип компресија се заснива на понављаним обрасцима у подацима који се компримују, а компресија постаје боља што је датотека дужа, јер се све више и више узорака може пронаћи и користити.
Поједностављено, ако компримирате један фајл, речник који мапира (кратке) кодове на (дуже) обрасце нужно је садржан у сваком резултујућем зип фајлу; ако закопчате један дугачак фајл, речник се 'поново користи' и постаје још ефикаснији у свим садржајима.
Ако су ваши фајлови помало слични (као што је текст увек), поновно коришћење 'речника' постаје веома ефикасно и резултат је много мањи укупни зип фајл.
Следи одговор из Агањуа:
У зип-у, свака датотека се компримира одвојено. Супротно је солид цомпрессион, то јест, датотеке се компримују заједно. 7-зип и Рар подразумевано користе чврсту компресију. Гзип и Бзип2 не могу компримовати више датотека, тако да се прво користи Тар, који има исти ефекат као и чврста компресија.
Пошто КСМЛ датотеке имају сличну структуру (и вероватно сличан садржај), ако су датотеке компримоване заједно, компресија ће бити већа.
На пример, ако датотека садржи стринг “
И компресор је већ нашао тај низ у другој датотеци, замијенит ће га малим показивачем на претходни. Ако компресор не користи чврсту компресију, прва појава низа у датотеци ће бити забиљежена као литерал, који је већи.
Имате ли нешто да додате објашњењу? Звучи у коментарима. Желите ли прочитати више одговора од других технолошки паметних Стацк Екцханге корисника? Погледајте цео дискусију овде.