Podle přepínače -m (Nastavit metodu komprese) # ZipMultiThread - 7ZIP manuál a dokumentace, mt
výchozí je on
, takže to vůbec není potřeba specifikovat.
Implementace algoritmu DEFLATE 7zip však nepodporuje vícevláknové zpracování!
Jak jste již zjistili,
7za a archive.zip bigfile
používá pouze jedno jádro.
Ale .zip
soubory komprimují každý soubor jednotlivě. Při komprimaci několika soubory, možnost multi-threading komprimuje jeden soubor na jádro najednou.
Zkuste to a uvidíte, že
7za a archive.zip bigfile1 ... bigfileN
použije všech dostupných N
jádra.
Pokud chcete urychlit kompresi jednotky soubor, máte dvě možnosti:
-
Rozdělit
bigfile
po kouscích. -
Použijte jiný kompresní algoritmus.
Například implementace algoritmu BZip2 od 7zip podporuje multi-threading.
Syntaxe je:
7za a -mm=BZip2 archive.zip bigfile
Chyba syntaxe je také způsobena vaším pokusem použít algoritmus LZM pro .zip
kontejner. To není možné.
Možné algoritmy pro .zip
kontejnery jsou DEFLATE(64), BZip2 a bez komprese.
Pokud chcete použít algoritmus LZM, použijte .7z
kontejner. Tento kontejner také zpracovává následující algoritmy:PPMd, BZip2, DEFLATE, BCJ, BCJ2 a bez komprese.
Toto je stará otázka, nikoli odpověď na konkrétní otázku, ale odpověď na podstatu otázky (Použití všech jader ke kompresi formátu zip)
pigz (paralelní gzip s možností .zip)
pigz -K -k archive.zip bigfile txt
Získáte tak soubor kompatibilní se zipem 7x rychlejší při stejné úrovni komprese.
Rychlé srovnání kompresorů kompatibilních se zipem a kompresorů bez zipu s jedním a více jádry.
wall times na i7-2600k pro komprimaci 1.0gb txt souboru na fedoře 20
67s (120mb) 7za (zip,1 thread)
15s (141mb) 7za -mx=4 (zip,1 thread)
17s (132mb) zip (zip,1 thread)
5s (131mb) pigz -K -k (zip,8 threads)
9s (106mb) bsc (libbsc.com) (not zip,8 threads)
5s (130mb) zhuff -c2 (not zip,8 threads)
2s (149mb) zhuff (not zip,8 threads)
časy stěny k dekompresi
4.2s unzip -t
2.0s pigz -t
5.1s bsc d
0.5s zhuff -d