Según el interruptor -m (Establecer método de compresión) # ZipMultiThread - Manual y documentación de 7ZIP, mt
por defecto es on
, por lo que no es necesario especificarlo en absoluto.
Sin embargo, la implementación de 7zip del algoritmo DEFLATE no es compatible con subprocesos múltiples.
Como ya habrás descubierto,
7za a archive.zip bigfile
solo usa un núcleo.
Pero .zip
Los archivos comprimen cada archivo individualmente. Al comprimir varios archivos, la opción de subprocesos múltiples comprime un archivo por núcleo a la vez.
Pruébalo y verás que
7za a archive.zip bigfile1 ... bigfileN
utilizará todos los N
disponibles núcleos.
Si desea acelerar la compresión de un sencillo archivo, tiene dos opciones:
-
Dividir
bigfile
en trozos. -
Utilice un algoritmo de compresión diferente.
Por ejemplo, la implementación de 7zip del algoritmo BZip2 admite subprocesos múltiples.
La sintaxis es:
7za a -mm=BZip2 archive.zip bigfile
Además, el error de sintaxis se debe a su intento de usar el algoritmo LZM para un .zip
envase. Eso no es posible.
Los posibles algoritmos para .zip
Los contenedores son DEFLATE(64), BZip2 y sin compresión.
Si desea utilizar el algoritmo LZM, utilice un .7z
envase. Este contenedor también maneja los siguientes algoritmos:PPMd, BZip2, DEFLATE, BCJ, BCJ2 y sin compresión.
Esta es una pregunta antigua, y no la respuesta a la pregunta específica, sino una respuesta al espíritu de la pregunta (Uso de todos los núcleos para comprimir un formato zip)
pigz (gzip paralelo con opción .zip)
pigz -K -k archive.zip bigfile txt
Esto le dará un archivo compatible con zip 7 veces más rápido para el mismo nivel de compresión.
Una comparación rápida de compresores compatibles con zip y no zip que utilizan núcleos únicos y múltiples.
wall times en i7-2600k para comprimir un archivo txt de 1.0 gb en 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)
tiempos de pared para descomprimir
4.2s unzip -t
2.0s pigz -t
5.1s bsc d
0.5s zhuff -d