Почетна » како да » Зашто је Зип способан компримирати појединачне датотеке боље од више датотека с истим садржајем?

    Зашто је Зип способан компримирати појединачне датотеке боље од више датотека с истим садржајем?

    Бити у стању да компримујемо наше фајлове тако да је лакше да их делимо и / или транспортујемо, могу учинити наш електронски живот много лакшим, али понекад можемо видети чудне или неочекиване резултате димензионисања након што их компримујемо. Зашто је то? Данашња постова за питања и одговоре СуперУсер имају одговоре на конфузна питања читатеља.

    Данашња сесија питања и одговора долази нам захваљујући СуперУсер-у - подјела Стацк Екцханге-а, груписане од стране заједнице веб-локација за питања и одговоре.

    Фотографија љубазношћу Јеан-Етиенне Минх-Дуи Поирриер (Флицкр).

    Питање

    СуперУсер читач сиктифоотерсдуде жели да зна зашто зип може компримирати појединачне датотеке боље од више датотека с истом врстом садржаја:

    Претпоставимо да имам 10.000 КСМЛ датотека и желим их послати пријатељу. Пре него што их пошаљем, желео бих да их компримујем.

    Метод 1: Не компримирајте их

    Резултати:

    Метод 2: Отпустите сваку датотеку одвојено и пошаљите му 10.000 зипних КСМЛ датотека

    Команда:

    Резултати:

    3. метод: Креирајте једну Зип датотеку која садржи свих 10,000 КСМЛ датотека

    Команда:

    Резултати:

    Метод 4: Повежите датотеке у једну датотеку и зипајте је

    Команда:

    Резултати:

    Питања

    • Зашто добијам тако драматично боље резултате када само зипујем једну датотеку?
    • Очекивао сам да ћу добити драстично боље резултате користећи метод 3, а не метод 2, али не. Зашто је ово?
    • Да ли је ово понашање специфично за зип? Ако бих покушао да користим Гзип, да ли бих добио различите резултате?

    Додатне информације

    Мета Дата

    Један од понуђених одговора сугерише да је разлика у системским мета подацима који су похрањени у зип датотеци. Не верујем да је то случај. Да бих је тестирао, урадио сам следеће:

    Резултујућа зип датотека је 1.4 МБ. То значи да још увијек има око 10 МБ необјашњеног простора.

    Зашто је зип способан компримирати појединачне датотеке боље од више датотека с истом врстом садржаја?

    Одговор

    Сурадници СуперУсер Алан Схутко и Агању имају одговор за нас. Прво горе, Алан Схутко:

    Зип компресија се заснива на понављаним обрасцима у подацима који се компримују, а компресија постаје боља што је датотека дужа, јер се све више и више узорака може пронаћи и користити.

    Поједностављено, ако компримирате један фајл, речник који мапира (кратке) кодове на (дуже) обрасце нужно је садржан у сваком резултујућем зип фајлу; ако закопчате један дугачак фајл, речник се 'поново користи' и постаје још ефикаснији у свим садржајима.

    Ако су ваши фајлови помало слични (као што је текст увек), поновно коришћење 'речника' постаје веома ефикасно и резултат је много мањи укупни зип фајл.

    Следи одговор из Агањуа:

    У зип-у, свака датотека се компримира одвојено. Супротно је солид цомпрессион, то јест, датотеке се компримују заједно. 7-зип и Рар подразумевано користе чврсту компресију. Гзип и Бзип2 не могу компримовати више датотека, тако да се прво користи Тар, који има исти ефекат као и чврста компресија.

    Пошто КСМЛ датотеке имају сличну структуру (и вероватно сличан садржај), ако су датотеке компримоване заједно, компресија ће бити већа.

    На пример, ако датотека садржи стринг “И компресор је већ нашао тај низ у другој датотеци, замијенит ће га малим показивачем на претходни. Ако компресор не користи чврсту компресију, прва појава низа у датотеци ће бити забиљежена као литерал, који је већи.


    Имате ли нешто да додате објашњењу? Звучи у коментарима. Желите ли прочитати више одговора од других технолошки паметних Стацк Екцханге корисника? Погледајте цео дискусију овде.