Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Świadome pakowanie — test formatów pakujących

Przeważnie mamy swój ulubiony program/format do archiwizowania i zawsze go używamy, nie zastanawiając się w ogóle nad alternatywą. Czy to w ogóle ma jakieś znaczenie, którego formatu używamy? Może jedynie takie, że nasz znajomy może mieć problem z rozpakowaniem egzotycznego formatu? Sprawdźmy!

Dobór różnych typów danych do archiwizowania

Wiadomo, że pliki tekstowe można skompresować mocniej, niż np, zdjęcia zapisane w formacie jpg. Wiadomo też, że 1000 plików zajmujących razem 10MB będzie się dłużej pakowało niż 1 o rozmiarze 10 MB. Dlatego do testu przygotowałem różne zbiory danych, na których będę sprawdzać prędkość pakowania oraz stopień uzyskanej kompresji.

1. Dokumentacja javy 7 wyczyszczona z plików graficznych - ponad 13000 plików tekstowych i folderów zajmujących łącznie 263,2 MB.
2. Zdjęcia w formacie jpg - 480 elementów zajmujących 594,7 MB.
3. Pliki mp4 - 81 plików kodowanych h264 - łącznie zajmujących 853,8 MB
4. Archiwum mieszane - trochę zdjęć (około 180 - 177,4 MB), trochę plików tekstowych (ponad 700 - ok 8 MB), trochę plików mp3 (ponad 20 - 104 MB) - łącznie 299,7 MB danych różnego typu.

Wybór formatów do przetestowania

Linux Mint oferuje bogactwo formatów. Przetestowanie wszystkich zajęło by strasznie dużo czasu, ale tyle go nie mam. Dlatego wybrałem najpopularniejsze oraz kilka, które mnie ciekawiły.
W tym miejscu muszę jeszcze poczynić małe wyjaśnienie o sposobie archowizowania w formacie typu tar.*. Otóż w systemach uniksowych przyjęło się oddzielenie procesu archiwizowania plikóo od ich kompresowania. Sam tar składa poszczególne pliki do kupy do jednego pliku. Następnie wybrany paker (gzip, 7z, lzma) pakuje ten jeden przygotowany plik. Pod windowsem zip czy rar, a także 7z kompresują od razu poszczególne pliki.

7z - nie zachowuje uprawnień plików

rar*

tar.7z

tar.gz

tar.bz2

zip

*Znalazłem trialową wersję konsolową packera rar.

Wyniki testów

Mam nadzieję, że zaprezentowane poniżej wyniki dadzą każdemu do myślenia.

Paczka 1 - pliki tekstowe

Jak wiadomo pliki tekstowe dobrze się kompresują. Różnica względna między rozmiarem oryginalnego zestawu danych, a archiwum jest znacząca. Bezwzględnie przeważnie nie zyskujemy wiele, ponieważ nawet rozpakowane pliki tekstowe zajmują nie wiele. Specjalnie pobrałem duży zbiór, by pokazać na nim, że nawet pliki tekstowe mogą sporo zajmować.
Zobaczmy wyniki:

7zip wygrywa bezapelacyjnie w kategorii stopnia kompresji, jest jednak potwornie wolny. Użycie kombinacji archiwum tar i kompresora 7z (tar.7z) wyraźnie skraca czas tworzenia skompresowanego archiwum. Z pewnością warto zwrócić uwagę na bardzo szybkie pakowanie tar.gz, które osiąga nadal bardzo dobry wynik. Wydaje mi się, że w większości przypadków to właśnie ten format jest praktyczniej przy pakowaniu plików tekstowych.
Zdecydowanie najsłabiej wypada popularny zip, który pracuje długo nie dając przy tym najgorszy stopień kompresji.

Paczka 2 - zdjęcia w formacie jpg

Zdjęcia w formacie jpg same w sobie są już skompresowane. Dlatego nie poddają się one dalszemu ściskaniu tak dobrze jak pliki tekstowe. Warto jednak wiedzieć jak dużo możemy zyskać i ile zajmie to czasu. Czy formaty, które najlepiej radziły sobie z plikami tekstowymi, poradzą sobie równie dobrze ze zdjęciami?
Zobaczmy:

Nieoczekiwanym zwycięzcą jest rar! Nie dość, że uzyskał najlepszy stopień kompresji, to uczynił to w stosunkowo dobrym czasie. 7z znów był najwolniejszy, a wsparcie tara nic nie dało w tym przypadku. Tar.gz ponownie był najszybszy, ale osiągnął mierne wyniki. W przypadku pakowania kilkunastu zdjęć, które zamierzamy wysłać mailem może być przydatny, aczkolwiek jeśli zamierzamy wykonać kopię wszystkich naszych zdjęć, które zajmują powiedzmy 500 GB, to z pewnością prędkość nie ma takiego znaczenia. Ja osobiście wolałbym zostawić komputer włączony na noc i zaoszczędzić kilkadziesiąt GB.

Paczka 3 - pliki wideo w formacie mp4 (kodowane h264)

Przed rozpoczęciem tego testu spodziewałem się, że pliki wideo zachowają się podobnie do zdjęć w formacie jpg. Czy w takim razie ponownie zwycięży rar? A może ktoś nas zaskoczy?
Zobaczmy:

W pewnym sensie znów zwycięża rar. Osiągnięty stopień kompresji jest zbliżony do najlepszego, osiągniętego przez 7z. Rar wykonał zadanie jednak dużo szybciej. Tar,gz był po raz kolejny błyskawicznym sprinterem z kiepskimi wynikami. O ile w przypadku pakowania niewielkiej ilości zdjęć, widziałem dla niego zastosowanie, tak przy kompresowaniu materiów wideo wydaje się być bezużyteczny.

Paczka 4 - pliki mieszane (tekstowe, jpg, mp3)

W codziennym użytkowaniu komputera często zdarza się potrzeba spakowania dużej struktury katalogów, które zawierają przeróżne typy danych. Nie będziemy się wtedy zastanawiać czy więcej jest tam plików tekstowych, zdjęć, czy muzyki. Dlatego postanowiłem wykonać dodatkowy test na pakera uniwersalnego. Faworytami w zależności od priorytetów wydają się być tar.gz i rar. Pierwszy jest szybki, drugi dobrze pakuje zdjęcia i filmy. Tym razem zamiast filmów dałem jeden album w formacie mp3.
Zobaczmy:

Wygląda na to, że pliki mp3 okazały się bardzo ciężkostrawne dla wszystkich pakerów. Osiągnięte wyniki są bardzo zbliżone. Spore różnice są w czasie pracy poszczególnych pakerów, ale tutaj już zaskoczenia nie ma.

Podsumowanie

Wyniki poszczególnych testów są dla mnie lekkim zaskoczeniem. Przykładowo bardzo popularny i szeroko używany format 7z okazał się być strasznie powolny. Owszem, uzyskuje przeważnie bardzo dobre stosunki kompresji, ale w wielu sytuacjach nie zależy nam na tym aż tak bardzo. A mogę się założyć, że wiele osób, zwłaszcza na windowsie, używa go za każdym razem, ot z przyzwyczajenia, nie wiedząc ile czasu tracą. Będę musiał za jakiś czas powtórzyć testy na tych samych danych, ale pod windowsem, aby przekonać się czy windowsowe implementacje 7z i winrara różnią się jakoś znacząco od linuxowych. Kto wie, może pod windowsem 7z działa szybciej?
Popularny na linuxch tar.gz jest naprawdę szybki na tle konkurencji. Szczerze mówiać podejrzewałem to już od jakiegoś czasu. Po raz pierwszy zaobserwowałem to rozpakowując na windowsie eclipse'a. Byłem przekonany, że na Linuxie ta sama czynność zajmuje zdecydowanie mniej czasu. Nie wiedziałem jednak, że była to kwestia formatu.
Warto również wiedzieć, że rar tak dobrze radzi sobie ze zdjęciami i filmami. Wydaje mi się, że jest to ważna wiedza, zwłaszcza gdy przychodzi nam do tworzenia backup'u.
Po takim teście mam poczucie, że jestem bardziej świadomym tego, co się dzieje z archiwizowanymi plikami i nie będę już za każdym razem używać tylko jednego formatu. mam nadzieje, że ta wiedza przyda się również Wam! 

linux oprogramowanie porady

Komentarze

0 nowych
dawdtrxx   5 #1 17.10.2014 16:14

WinRAR'a nie używam od dawna, używam kompresji zip i 7z, z czego częściej zip, właśnie z powodu powolności 7zipa, a nie zawsze jest mi potrzebna taka silna kompresja.

MP3 sam w sobie jest już skompresowany, więc dużo nie zyskamy, jedynie konwertując na mniejszy bitrate, ale wtedy tracimy również jakość, a nie oto tutaj chodzi. Myślę, że wiele lepsze działanie algorytmów można by sprawdzić na plikach WAV


Jako ciekawostkę można wspomnieć o KGB Archiverze, który potrafi skompresować do jeszcze mniejszych rozmiarów. Tylko niestety jest bardzo powolny. Trafiłem kiedyś na pliki spakowane tym programem z kilku GB do 1MB. Kolega kiedyś coś takiego pobrał, to mu rozpakowywało pół dnia :)
http://www.dobreprogramy.pl/KGB-Archiver,Program,Windows,11815.html

Autor edytował komentarz.
kaisuj   11 #2 17.10.2014 16:31

@dawdtrxx: Kiedyś testowałem kgb i faktycznie potrafił zdziałać cuda, ale w praktyce był nieużywalny ze względu na tę powolność.
Pliki wav faktycznie świetnie się kompresują, niczym pliki tekstowe. Tylko obecnie ten format jest mało używany.

Indy   9 #3 17.10.2014 16:32

@dawdtrxx: Szybka kompresja 7z jest szybsza od normalnej/ulra zipa a i tak dalej 7zip lepiej kompresuje.
Autorowi testu proponuje dodatkowo następnym razem zbadać różne stopnie kompresji 7zip i porównać uzyskany stopień i czas kompresji z innymi formatami.
Osobiście kompresuje jednak 7zipem ze stopniem Ultra, i metodą LZMA2, która działa na kilku wątkach i jest znacznie szybsza niż Ultra na LZMA mimo że daje odrobinę gorsze rezultaty.
Warto też pamiętać, że oficjalna windowsowa wersja 7zipa ma już trzy lata, ale cały czas powstają nowe wersje testowe...

Autor edytował komentarz.
fiesta   15 #4 17.10.2014 16:39

Ale czy to cokolwiek zmienia ?? I tak jest wiadome dla ogółu że najpowszechniej stosowanym formatem jest *.rar i jeszcze długo nic tego nie zmieni.

etam   10 #5 17.10.2014 16:40

Fajne porównanie. Jednak brakuje w nim tar.xz i pigz.

kwpolska   6 #6 17.10.2014 16:56

.tar.xz FTW. 7zip jest podobny, ale to nie to samo.

  #7 17.10.2014 17:01

Proszę porównywać do RAR5 a nie rar i to jeszcze na linuxie w przestarzałej wersji. Dodatkowo proszę umieścić wersje pakerów oraz wybrane opcje!

  #8 17.10.2014 17:18

A freearc gdzie? :P

@fiesta
Ciekawe, ja często spotykam się z zipem.

dawdtrxx   5 #9 17.10.2014 17:20

@Indy: Zapomniałem dodać... Gdy używam 7z, to tylko kompresja Ultra z LZMA2, jak mi zależy na czasie i nie zależy na poziomie kompresji to biorę zwykły zip, swoją drogą jakoś szybkiej kompresji 7z nigdy nie używałem ;)

lynx44   11 #10 17.10.2014 17:35

@dawdtrxx: KGB Archiwer używał starej wersji formatu PAQ z przed 8 lat. Od kilku lat dostępny jest zpaq który jest ulepszoną wersją tego formatu, ale nie testowałem.

kaisuj   11 #11 17.10.2014 17:42

Sprawdziłem, że domyślnie w GUI (tak, jak pakowałem) 7zip pakuje z ustawieniami ultra (9). Jak znajdę chwię to zaktualizuje testy i dopiszę wyniki dla szybkiego pakowania za pomocą 7z.

neXt___   12 #12 17.10.2014 18:29

@sdj (niezalogowany): wejdź na peb.pl i porównaj sobie ilość .zip i .rar.

msnet   19 #13 17.10.2014 18:55

Do kompresji używam od dawna programu bandizip, a formaty, których używam, to na ogół ZIP lub RAR. Z resztą - na ogół używam tego programu do dekompresji, a samej kompresji używam rzadko.

KyRol   18 #14 17.10.2014 21:04

Dobór formatu kompresji wedle mnie zależy od potrzeb w danym scenariuszu zastosowań, dla mnie nie ma sensu stwierdzenie, że np. 7z jest do bani bo kompresja długo trwa. Jeśli pakujemy folder GNU/Linuksowy i chcemy zachować uprawnienia, to wybór np. tar.gz jest zasadny pod warunkiem, że nie zależy nam zbytnio na rozmiarze pliku.

Możemy także kompresować plik, który będzie wynikiem komendy dd i znowu - zależy co chcemy osiągnąć. Możemy go spakować klasycznie w dowolnie wybranym formacie, a możemy i użyć innej metody aby później nie klepać w terminalu makaronowych komend. Przykładem niech będzie .img.xz

Reasumując mając w domu/pracy/szkole jakiś komp na wypasie lub dzierżawiąc jakąś usługę sieciową, gdzie zasoby zdalnej maszyny są imponujące szkoda bawić się w stratę miejsca.

Autor edytował komentarz.
pocolog   12 #15 17.10.2014 22:02

Gdzie TAR.XZ ktory powoli juz wypiera wysluzonego gz2. Ponadto brakuje ustawien z jakimi byly kompresowane pliki.
Jesli chodzi o najlepszy kompresor to oczywiscie jest to w wiekszosci zastosowan NAJPOPULARNIEJSZY format (czyli zip i linuksowy odpowiednik gz). Moim ulubionym od dawna jest xz ze wzgledu na integracje z tar (przelacznik "-J") i dobry stopien kompresji.

Autor edytował komentarz.
sr57be45   5 #17 18.10.2014 01:05

Kompresować jpg ? Już lepiej "niepotrzebne" pliki przeskalować do rozdzielczości monitora + jakość 50 do 80 % w zależności od zdjęcia.

Kompresowanie miało swój szczyt popularności przy małych dyskach twardych oraz gdy nagrywarki CD nie były tak powszechne. Czy jest ktoś kto nie używał WinRara dawno dawno temu ?

@kaisuj
Pliki h.264 chyba z dużym bittrate ? Uzyskałem wyniki ~100% dla 7z przy mniejszej "przepływności/strumieniu danych".

Autor edytował komentarz.
  #18 18.10.2014 09:00

@dawdtrxx: Szybkość 7zip zależy od stopnia kompresji - jeśli ustawimy ją na ULTRA, damy duży słownik i dużą długość słowa to uzyskamy fenomenalnie duża kompresję jednak kosztem długiego czasu kompresji i mocnego obłożenia procesora podczas działania programu. W podanym teście zabrakło mi parametrów z jakimi kompresowano pliki, zapewne pozostając przy defaultowych ustawieniach. Ja sam nie zwracam uwagi na czas kompresji jeśli robię archiwizację rzadko używanych zbiorów - dlatego ustawiam wszystkie parametry 7zip'a na maxa i spokojnie czekam. Jeśli potrzebuję szybkiej kompresji (coś muszę wysłać klientowi szybko mailem lub na ftp) to zmniejszam parametry uzyskując średnią jakość (wydajność) kompresji zyskując przy tym na czasie. Niegdy nie używam domyślnych ustawień bo lubię mieć kontrolę nad procesem.

pocolog   12 #19 18.10.2014 09:04

@sr57be45: kompresja pozwala zaoszczedzic np cenny transfer na serwerze, juz nie wspominajac o wygodzie przeslania/skopiowania 1 zamiast kilku..dziesieciu/set/tysiecy malych plikow.

yuwo   8 #20 18.10.2014 15:22

Ciekawy tekst, chociaż brakuje jakiejś tabelki ze szczegółowymi ustawieniami. A szkoda. Ja używam 7z ultra do pakowania plików, jeśli szczególnie zależy mi na wielkości, a jak ma być szybko, ale "nie na maksa" wtedy używam zwykłego, szybkiego pakowania zipem.

Sądzę również, że pakowanie plików nie odejdzie w niepamięć. Zmieni się tylko samo przeznaczenie. Dotychczas powodem pakowania była chęć zaoszczędzenia miejsca na dysku. Obecnie to wygoda w przesyle danych (przesyła się jeden plik zamiast np. 30). Zdarza mi się pakować bez kompresji do 7z lub zipa, właśnie tylko po to, aby nie musieć bawić się z kilkudziesięcioma plikami, a tylko jednym.

Jeszcze jedno: warto porównać wydajność 7z w wersji 32 i 64-bitowej. U mnie wersja 64-bitowa jest w niektórych scenariuszach nawet 4-krotnie szybsza niż 32-bitowa.

kaisuj   11 #21 18.10.2014 16:02

@yuwo: Testowałem domyślnym programem pakującym w Mincie, który nie ma praktycznie żadnych ustawień. Aby dokonać dalszej analizy, musiałbym albo poczytać składnie konsolową, żeby uzyskać różne poziomy kompresji, albo poszukać innego programu GUI, które takie ustawienia posiada.
Jak już pisałem w teście, zamierzam w przyszłości zrobić analogiczny test pod windowsem i wtedy poeksperymentować przy okazji z ustawieniami.
Swoją drogą wykonanie tych 4 testów zajęło mi całkiem sporo czasu, więc przemnożenie każdego formartu przez kilka ustawień kompresji i wersji 32/64 to już masakra, ale może kiedyś...
Natomiast jeśli ktoś ma naprawdę dużo czasu to zachęcam do eksperymentowania.

ollbrzym   4 #22 18.10.2014 18:24

Czyli rar zdecydowanie najlepszt ?? nie wiem czy dzis jest jakikolwiek sens jompresowac w celu zaoszczędzenia przestrzeni. Prędzej w celu podzielenia na części o konkretnej wielkości badz ułatwienie przy przerzucaniu wielu plików.

  #23 18.10.2014 18:50

@kaisuj: DJ'e korzystają gęsto z wavów, na beatporcie, junodownload czy na hardtunes lub bandcamp możliwa jest opcja kupna loseless plików.

saturno   10 #24 18.10.2014 19:26

@fiesta: //najpowszechniej stosowanym formatem jest *.rar//

Chyba tylko u fanów piractwa.

saturno   10 #25 18.10.2014 19:43

@kaisuj: //Testowałem domyślnym programem pakującym w Mincie//

Jeśli chcesz robić miarodajne testy to masz Midnight Commander (F2)

Berion   14 #26 18.10.2014 20:24

Ja na Windows używam 7zip, a na Linuksie zwykle tar.7z (z racji braku symlinków).

@kaisuj: Ale ultra dla LZMA, a nie LZMA2. Różnica w niektórych przypadkach jest spora. Po za tym FileRoller jest strasznie ubogi. Trzeba było w terminalu klepać litanie. ;)

Autor edytował komentarz.
fiesta   15 #27 18.10.2014 21:20

@saturno: czy to istotne dla kogo, nie prowadzę statystyk odnośnie tego kto z użytkowników RARa jest piratem.
Zaraz po nim ZIP a potem długo nic.

A reszta (w tym i ten wpis blogowy) to rozważania sensu stricto akademickie w stylu wyższości świąt Bożego Narodzenia nad Wielkanocą :P

Autor edytował komentarz.
rgabrysiak   12 #28 19.10.2014 20:18

Od dłuższego czasu korzystam tylko z formatu zip i systemowych narzędzi do pakowania, rozpakowywania danych. Może i są formaty posiadające lepszy stopień kompresji danych, ale jak dla mnie zipy są najbardziej uniwersalne. Nie potrzebuję się martwić czy dana osoba ma program, którym będzie mogła rozpakować przesłane archiwum.

  #29 20.10.2014 12:26

A co z przenoszeniem plików z Linuxa na Windows i vice versa. Miałem taki problem, że jak pakowałem na Windows pliki 7zip z Cyrylicą w nazwie to mi na Linuxie robiła się sieczka. W drugą stronę działało tak samo (spakowane pod Linuxem, wypakowywane pod Windowsem). Jaki format radzi sobie z UTF8 na obu systemach?

Jx1   6 #30 20.10.2014 17:57

@kaisuj Nie obraź się, ale ten artykuł ma niewiele wspólnego z tytułem. To co jest tu pokazane to raczej NIEŚWIADOME pakowanie - i żaden z tego TEST.
Nic o wersjach programów, nic o ustawieniach kompresji - które mogły by poodwracać wyniki w każdej tabelce. A to że teksty kompresują się bardziej niż formaty już skompresowane (jpg/mp4) to wiedział każdy przed lekturą.
Nie umniejszam Twojej wiedzy czy doświadczenia ale właśnie liczyłem na dogłębniejszy opis tematu.

  #31 21.10.2014 17:58

Tak jak napisali poprzednicy, 7z (tak samo jak xz, korzystajacy z LZMA/LZMA2) w trybie fast (-1 albo -2) jest porownywalny albo nawet szybszy od gzipa a stopien kompresji ma wciaz bardzo dobry. (Win)rar z tego co wiem blyszczy tylko w kilku sytuacjach. Ma zaszyte w sobie kilka heurystyk preprocessingu dla pewnych typow plikow, np. wav, jpg, exe. Jak nie rozpozna typu pliku, to te same dane skompresuje samym uniwersalnym algorytmem pakujacym i wtedy wyniki wychodza mierne a szybkosc dzialania spada. Kiedys w ustawieniach zaawansowanych Winrara dalo sie te heurystyki wlaczac pojedynczo, teraz nie wiem, zbyt dawno nie uzywalem.

  #32 21.10.2014 20:08

1) Swego czasu opublikowałem wpis na blogu o porównaniu stopnia kompresji plików tekstowych dla zip/7z/rar: http://karol-koziol.blogspot.com/2012/02/7z-vs-zip-na-przykadzie-plikow.html
7z potrafi osiągnąć stopień kompresji nawet rzędu 1%.
2) Porównywanie stopnia kompresji przy kompresowaniu plików już wewnętrznie skompresowanych (np. mp3/mp4) uważam za bezcelowe. Jeśli różnice dla różnych programów są rzędu 1%, to może się okazać, że dla innego zestawu plików inny program okazałby się "zwycięzcą".

  #33 23.10.2014 21:48

Rar jest shareware i wiele osób zapomina (zaraz po instalacji) o tym jakże ważnym fakcie.

duffee   11 #34 06.11.2014 00:15

a co z rar5 z nowszą wersją rar-a ?

  #35 27.09.2015 19:00

Wszystko zależy co się kompresuje. Skompresowane dane losowe np. /dev/urandom zajmują więcej niż bez kompresji i nie ważne jaki kompresor się użyje.
7 zip potrafi czasem spakować 2x bardziej nawet niż rar i to przy krótszym czasie kompresji. 7zip też dobry do robienia archiwum bez kompresji na windowsie (analog linuksowego tar) - szybkość działania większa niż w rar i brak ograniczeń jak w zipie co do ilości plików.

  #36 27.09.2015 23:41

Jak komuś bardzo zależy na szybkości to polecam lzop - 3x szybszy od gnu zipa.