Świadome pakowanie — test formatów pakujących
17.10.2014 17:05
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!