Secondo -m (Set compression Method) switch # ZipMultiThread - 7ZIP manuale e documentazione, mt
il valore predefinito è on
, quindi non è necessario specificarlo.
Tuttavia, l'implementazione di 7zip dell'algoritmo DEFLATE non supporta il multi-threading!
Come hai già scoperto,
7za a archive.zip bigfile
utilizza solo un core.
Ma .zip
i file comprimono ogni file individualmente. Quando si comprimono diversi file, l'opzione multi-threading comprime un file per core alla volta.
Provalo e lo vedrai
7za a archive.zip bigfile1 ... bigfileN
utilizzerà tutti i N
disponibili core.
Se vuoi velocizzare la compressione di un singolo file, hai due scelte:
-
Dividi
bigfile
a pezzi. -
Usa un algoritmo di compressione diverso.
Ad esempio, l'implementazione di 7zip dell'algoritmo BZip2 supporta il multi-threading.
La sintassi è:
7za a -mm=BZip2 archive.zip bigfile
Inoltre, l'errore di sintassi è causato dal tuo tentativo di utilizzare l'algoritmo LZM per un .zip
contenitore. Non è possibile.
I possibili algoritmi per .zip
i contenitori sono DEFLATE(64), BZip2 e nessuna compressione.
Se vuoi usare l'algoritmo LZM, usa un .7z
contenitore. Questo contenitore gestisce anche i seguenti algoritmi:PPMd, BZip2, DEFLATE, BCJ, BCJ2 e nessuna compressione.
Questa è una vecchia domanda, e non la risposta alla domanda specifica, ma una risposta allo spirito della domanda (Utilizzo di tutti i core per comprimere un formato zip)
pigz (gzip parallelo con opzione .zip)
pigz -K -k archive.zip bigfile txt
Questo ti darà un file zip compatibile 7 volte più veloce per lo stesso livello di compressione.
Un rapido confronto tra compressori zip compatibili e non zip che utilizzano core singoli e multipli.
wall times su i7-2600k per comprimere file txt da 1.0gb su fedora 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)
tempi di muro per decomprimere
4.2s unzip -t
2.0s pigz -t
5.1s bsc d
0.5s zhuff -d