Kwantowomechaniczne pakiety obliczeniowe tworzą dane wyjściowe w postaci plików tekstowych. Niekiedy są to pliki bardzo duże - kilka/kilkanaście/kilkadziesiąt MB czystego tekstu. Ostatnio postanowiłem zrobić porządki w katalogach (by zaoszczędzić trochę przestrzeni dyskowej) i skompresować niektóre katalogi zawierające duże pliki tekstowe. Postanowiłem przy okazji sprawdzić który z dwóch rozpowszechnionych formatów - zip i 7z, charakteryzuje się lepszą kompresją plików tekstowych.
Rozmiar bez kompresji (MB) | Archiwum zip (MB) | Archiwum 7z (MB) | Archiwum rar (MB) | |
Katalog 1 (tylko pliki tekstowe) | 193,7 | 38,8 | 2,4 | 3,5 |
Katalog 2 (tylko pliki tekstowe) | 633,7 | 128,6 | 5,9 | 8,5 |
Katalog 3 (pliki tekstowe i binarne) | 699,6 | 153,3 | 99,7 | 144,4 |
Wyniki są trochę zaskakujące, ponieważ dla czystych plików tekstowych kompresja 7z pozwala stworzyć archiwum o rozmiarze ~100 razy mniejszym niż rozmiar plików nieskompresowanych (i kilka razy mniejszym niż archiwum zip).
Aktualizacja: Za namową Ominousa dodałem także kolejny popularny format kompresji - rar.
A użyłeś w tym 7zipie algorytmu lzma czy ppmd ?
OdpowiedzUsuńPrzy danych tekstowych lepiej spisuje się ppmd w pozostałych przypadkach lepszy jest lzma (i on jest używany domyślnie jak nie poda się żadnego parametru).
Jeśli kompresowałeś te pliki tekstowe na domyślnych ustawieniach możesz się trochę zdziwić gdy mu dasz -m0=ppmd
Użyłem algorytmu domyślnego.
OdpowiedzUsuńZachęciłeś mnie do pobawienia się parametrami. Testowo kompresowałem plik tekstowy o rozmiarze 32,4 MB. Wyniki testu:
7z a test.7z test.txt -> 228 KB
7z a -m0=ppmd test1.7z test.txt -> 2,2 MB
7z a -m9=ppmd test2.7z test.txt -> 262 KB
7z a -m0=lzma test3.7z test.txt -> 228 KB
7z a -m9=lzma test4.7z test.txt -> 258 KB
Jak dla mnie ustawienia domyślne są bardzo dobre.
Dla porównania:
zip test.zip test.txt -> 6,3 MB
Hmmm, jeżeli dobrze widzę to kompresja LZMA z wyższym poziomem dała plik o większym rozmiarze. Zadziwiające :)
OdpowiedzUsuńJak wygląda poziom redundancji danych wejściowych?
@Bulba
OdpowiedzUsuńW pliku tekstowym powtarzają się pewne fragmenty, jak to przy procedurach iteracyjnych.
Jak chcesz się pobawić to mogę ci podesłać plik na maila.
a może by tak porównać jeszcze z innymi kompresjami np. tar, rar i kgb?
OdpowiedzUsuńNa przykładzie powyższego pliku tekstowego o rozmiarze 32,4 MB:
OdpowiedzUsuńtar.gz -> 6,3 MB
tar.bz -> 6,3 MB
tar.xz -> 216 KB
tar.lzma -> 215 KB
rar -> 313 KB
Archiwizera KGB nie posiadam.
KGB to tak naprawdę stary program PAQ6 w którym ktoś zmienił nazwę i się pod nim podpisał, szkoda tracić na niego czasu, lepiej po testuj coś z serii PAQ8
OdpowiedzUsuńTo są programy konkursowe, raczej nie przeznaczone do normalnego użytku (za wolno działają) ale stopień kompresji naprawdę niesamowity link do strony ich autora http://cs.fit.edu/~mmahoney/compression/ można pobrać różne wersje łącznie ze źródłami.
A może by tak poszerzyć kolumnę i dodać tam .rar. Typowo na plikach 193,7; 633,7; 699,6. Jak się Autor na to zapatruje?
OdpowiedzUsuń@Ominous
OdpowiedzUsuńAutor się na to pozytywnie zapatruje, tylko musiał wcześniej rozpakować spakowane katalogi i spakować je ponownie :-)
@Karol Kozioł
OdpowiedzUsuńDziękuje za pozytywne rozpatrzenie wniosku ;)