Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

7-zip - od czego zależy wielkość skompresowanego pliku

21 Sty 2016 21:37 1392 12
  • Poziom 10  
    Witam
    Mam takie pytanie, jakiś czas temu spakowałem sobie kursy wideo. Kursy te zawierały nie tylko pliki mp4, ale również css, php, js i inne. Jednym słowem mieszanka różnych plików.

    Spakowałem je Programem 7-zip z ustawieniami
    - Format archiwum: 7z
    - Stopień kompresji: Ultra
    - Metoda kompresji: LZMA2
    - Rozmiar słownika: 64 MB
    - Rozmiar słowa: 64
    - Rozmiar bloku ciągłego: Ciągły

    Zrobiłem to jakiś czas temu na starym laptopie HP Pavilion dv6000 z dwurdzeniowym procesorem i 3 gb ram. Niedawno jednak kupiłem sobie nowego laptopa Lenovo Z51-70 z procesorem i7, 16 gb ram i pomyślałem, że rozpakuję te kursy i spakuję jeszcze raz co by mniej zajmowały. Niestety ku mojemu zdziwieniu każdy jeden kurs po spakowaniu na nowym komputerze zajmuje więcej niż plik utworzony na starym.

    I tu moje pytanie od czego zależy wielkość pliku po kompresji? Na pewno od ustawień, ale na obu komputerach zastosowałem identyczne ustawienia 7-zipa, zmienił się tylko sprzęt. Myślałem, że nowy conajmniej równie dobrze spakuje pliki jak nie lepiej. Co jeszcze ma na to wpływ?
  • Moderator - Komputery Serwis
    Sprzęt będzie miał wpływ raczej jedynie na szybkość tych operacji (pakowanie/rozpakowanie). Rozmiary powinny w przybliżeniu pozostać podobne. Rozmiar pliku po kompresji będzie zależał między innymi od parametrów, które wyszczególniłeś w pierwszym poście, ale również od podatności plików na kompresję. Pliki tekstowe, dokumenty, niekompresowane audio/wideo/grafika będą się kompresować znacznie lepiej niż już skompresowane formaty.
  • Poziom 10  
    Hmm.... Może faktycznie wersja miała znaczenie, choć wydaje mi się, że im nowsza tym właśnie lepiej powinna kompresować. Różnice w rozmiarze są czasem kilka bajtów, czasem kilka MB, a czasem nawet ponad 200 MB i zawsze na korzyść starego komputera.
  • Poziom 43  
    Nie koniecznie musi kompresować bardziej. Nowsza wersja może kompresować np. szybciej, mniej obciążać procesor, może też np. lepiej kompresować jedne formaty a gorzej inne.

    Zawsze możesz sprawdzić inny program. Kiedyś bawiłem się programem KGB Archiver. Przy maksymalnym stopniu kompresji robił wrażenie ale też trwa to sporo czasu i nieźle katuje procesor. Za to nowy Twój laptop to powinien być jak stworzony do takich zabaw.
    Sam program jest darmowy do pobrania np. tu:
    http://sourceforge.net/projects/kgbarchiver/

    PS jedyna wada - ma swój format archiwum więc co nim spakujesz tylko nim rozpakujesz.
  • Poziom 10  
    Właśnie zrobiłem test. Zaktualizowałem 7-zipa do tej samej wersji na obu laptopach, i spakowałem ten sam katalog z tymi samymi plikami używając tych samych ustawień. Efekt:

    Plik po kompresji na starym laptopie:
    5,48 GB (bajtów: 5 890 092 960)

    Ten sam plik po kompresji na nowym lapku:
    5,48 GB (bajtów: 5 890 121 143)

    Niby żadna różnica w tym przypadku ale jednak jest :) A czasami dochodzi do ponad 200 MB. Ciekawe
  • Poziom 10  
    Systemy to Windows 8.1 Pro na starym lapku i Windows 10 Pro na nowym, ale doszedłem już do tego skąd wynikają różnice. Okazało się, że oprócz parametrów takich jak: Format archiwum, Stopień kompresji, Metoda kompresji, Rozmiar słownika, Rozmiar słowa i Rozmiar bloku ciągłego ma też wpływ ilość rdzeni jaka w danej chwili jest wykorzystywana podczas kompresji.

    Na starym lapku wykorzystywałem max 2 a na nowym 4, a w momencie kiedy ustawiłem na nowym 2 to rozmiary zaczęły być takie same tzn mniejsze. Dalej jednak nie wiem od czego to zależy. Pierwszy mój wniosek był taki, że im mniej rdzeni wykorzystuję tym dłużej się kompresuje, ale lepiej, ale zrobiłem trzeci test kompresując z wykorzystaniem jednego rdzenia, ale plik był więkkszy niż gdy kompresowałem dwoma. Także ta teoria została obalona.

    I tak katalog o rozmiarze:
    Rozmiar na dysku: 18,6 GB (bajtów: 19 997 392 896)

    Został skompresowany z ustawieniami jak w pierwszym poście:

    Przy wykorzystaniu jednego rdzenia do: 6,04 GB (bajtów: 6 486 962 176)
    Przy wykorzystaniu dwóch rdzeni do: 6,04 GB (bajtów: 6 486 937 600)
    Przy wykorzystaniu czterech rdzeni do: 6,12 GB (bajtów: 6 582 005 760)

    Ale dalej nie wiem jaka jest zależność między ilością wykorzystanych rdzeni a stopniem kompresji. Co do tego pliku, gdzie miałem różnicę 200 MB to nie jestem sobie teraz w stanie przypomnieć, który to był plik, ale miałem tak.
  • Pomocny dla użytkowników
    Wygląda na to, że gdyby kompresja przebiegała na jeszcze większej ilości rdzeni, to było by jeszcze gorzej. Ciekawa obserwacja. Wygląda na to, że wielowątkowość powoduje pogorszenie stopnia kompresji. Zapewne zależy to jeszcze od tego jakie pliki się kompresuje i jak duże one są.
  • Poziom 10  
    speedy9 napisał:
    Wygląda na to, że gdyby kompresja przebiegała na jeszcze większej ilości rdzeni, to było by jeszcze gorzej.


    Też tak na początku pomyślałem kiedy kompresja czterema rdzeniami wypadła gorzej niż kompresja dwoma, ale zauważ że z kolei kompresja z wykorzystaniem jednego rdzenia wypadła gorzej niż kompresja z wykorzystaniem dwóch.

    Czyli teoria, że im więcej rdzeni tym gorsza kompresja też odpada.