Portál AbcLinuxu, 30. dubna 2025 09:09
V oblasti bezstratovej kompresie dat dosahuju najlepsich vysledkov algoritmy PAQ. V poslednych rokoch vyhravaju tieto algoritmy v sutaziach Hutter Prize. Nevyhodou PAQ algoritmov je velka pametova a hlavne casova narocnost.
Pre pomalost kompresie vznikol projekt FastPAQ8 (FP8) ktory vychadza z projektu paq8px.FastPAQ8 obsahuje vylepsene algoritmy pre zvysenie rychlosti kompresie a zaroven sa snazi zachovat maximalny kompresny pomer aky dosahuje paq8px.Autor FP8 vydal poslednu verziu pre windows a hlavne zdrojaky z ktorych si mozme skompilovat aj binarku pre linux
sudo apt-get install nasm
Pre kompilaciu potrebujeme tieto subory: fp8.cpp a paq7asm.asm Najprv budeme vytvarat modul paq7asm.o pomocou nasm a potom samotny FP8.Do konzoly zadame tieto prikazy:
nasm paq7asm.asm -f elf
g++ fp8.cpp -m32 -DUNIX -O2 -Os -s -march=pentiumpro -fomit-frame-pointer -o fp8 paq7asm.o
Pre dalsie zvysenie rychlosti kompresie FP8 mozme pouzit SSE optimalizovane instrukcie:
nasm ./paq7asmsse.asm -f elf -O3
g++ fp8.cpp -m32 -O3 -s -fomit-frame-pointer -march=k8 -ffast-math -msse2 -msseregparm -mfpmath=sse -DUNIX -o fp8_sse paq7asmsse.o
Predchadzajuce prikazy pre kompilaciu nam vytvorily tieto subory:
fp8 - toto je standardna binarka aj s asm modulom
fp8_sse - tato binarka bude navyse pri pakovani vyuzivat SSE instrukcie cize ziskame este vacsiu rychlost kompresie.
Na zaver uvadzam pouzitie fp8 a vysledky kompresie.Binarke fp8 pridame priznak na spustenie a po zadani do konzoly sa objavi info pouzivania fp8.
rychlost:
- paq8px_v69 = 50.8s
- fp8 = 6.6s
kompresny pomer (SFC -7):
- paq8px_v68 = 8764929 bytes
- fp8 = 9167064 bytes
Priklad pre kompresiu suboru z excelu
./fp8_sse -7 subor.xls
subor.xls - 2445kB
subor.rar - 458kB
subor.fp8 - 263kB
Najnovsia verzia rar4 s maximalnou urovnou kompresie -m5 spakuje 2445kB subor.xls na 458kB a FastPAQ8 s parametrom -7 az na 263kB
Tiskni
Sdílej:
Peak RES | 673MB |
---|---|
Rýchlosť | Zhruba 10x rýchlejšie než fp8_sse |
Čas | 900,48s user 3,91s system 92% cpu 16:21,61 total * |
Kompresný pomer | 63MB / 445MB (13,984147%) |
Voľby | -9e |
Peak RES | 556 MB |
---|---|
Čas | 10045,54s user 11,42s system 21% cpu 12:55:32,65 total |
Kompresný pomer | 43M / 445M (9,5370084%) |
Voľby | -7 |
xz - 10,84s user 0,14s system 97% cpu 11,233 total, 66436kB RES fp8_sse - okolo 10 000s user (odhad podľa rýchlosti), > 500 MB RESTakže vzhľadom na rýchlosť dekompresie si viem zatiaľ ťažko predstaviť tento algoritmus ako reálne použiteľný pri distribúcii softvéru.
File Size (bytes) ------ ------------- enwik8 100,000,000 Version Options enwik8 -------- ------- ---------- xv 5.0.1 -9 -e 24,831,648 fp8 v3 -8 18,438,169Tabulka je z : Large Text Compression Benchmark
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.