W przypadku dystrybucji archiwów przez Internet na ogół priorytetem są następujące rzeczy:
- Współczynnik kompresji (tj. Jak mały kompresor tworzy dane);
- Czas dekompresji (wymagania dotyczące procesora);
- Wymagania dotyczące pamięci dekompresyjnej; i
- Kompatybilność (jak szeroki jest program dekompresyjny)
Wymagania dotyczące pamięci kompresyjnej i procesora nie są bardzo ważne, ponieważ możesz do tego użyć dużej, szybkiej maszyny i musisz to zrobić tylko raz.
W porównaniu do bzip2, xz ma lepszy współczynnik kompresji i krótszy (lepszy) czas dekompresji. Jednak przy zwykle używanych ustawieniach kompresji wymaga więcej pamięci do dekompresji [1] i jest nieco mniej rozpowszechniony. Gzip zużywa mniej pamięci niż oba.
Publikowane są archiwa w formacie gzip i xz, co pozwala wybrać:
- Potrzebujesz rozpakować na komputerze z bardzo ograniczoną pamięcią (<32 MB): gzip. Biorąc pod uwagę, mało prawdopodobne, gdy mówimy o źródłach jądra.
- Potrzebujesz zdekompresować minimalne dostępne narzędzia: gzip
- Chcesz zaoszczędzić czas pobierania i / lub przepustowość: xz
Tak naprawdę nie ma realistycznej kombinacji czynników, które skłoniłyby cię do wybrania bzip2. Więc jest stopniowo wycofywany.
Przejrzałem porównania kompresji w poście na blogu . Nie próbowałem powielać wyników i podejrzewam, że niektóre z nich uległy zmianie (głównie spodziewam xz
się poprawy, ponieważ jest to najnowsza wersja).
(Istnieją pewne konkretne scenariusze, w których dobra implementacja bzip2 może być lepsza niż xz: bzip2 może kompresować plik z dużą ilością zer i sekwencji DNA genomu lepiej niż xz. Nowsze wersje xz mają teraz (opcjonalny) tryb blokowania, który umożliwia odzyskiwanie danych po punkcie uszkodzenia i kompresji równoległej i [teoretycznie] dekompresji. Wcześniej tylko bzip2 je oferował. [2] Jednak żaden z nich nie jest istotny dla dystrybucji jądra)
1: W rozmiarze archiwum xz -3
jest około bzip -9
. Następnie xz zużywa mniej pamięci do dekompresji. Ale xz -9
(jak np. Używany w tarballach jądra Linuksa) używa znacznie więcej niż bzip -9
. (A nawet xz -0
potrzebuje więcej niż gzip -9
).
2: F21 System Wide Change: lbzip2 jako domyślna implementacja bzip2