Con frecuencia tengo la necesidad de comprimir archivos que son muy similares entre sí.
Actualmente uso 7Zip, que comprime un archivo de 16GB a 1.2GB en aproximadamente 35 minutos usando 8 núcleos con configuraciones Ultra.
Me parece que gran parte de ese tiempo se dedica a calcular el diccionario para usarlo en la compresión. Dado que los archivos son muy similares, el diccionario realmente utilizado también es similar.
¿Existe una herramienta de compresión basada en Windows (7Zip con una opción que desconozco, o una herramienta diferente) que pueda guardar el diccionario y reutilizar ese diccionario guardado para archivos posteriores?
¿Hay una mejor manera de abordar el problema de mantener una relación de compresión similar a la que tengo, mientras se comprime significativamente más rápido?
fuente
A diferencia del algoritmo DEFLATE, el LZMA de 7-Zip utiliza una compresión sólida de forma predeterminada, que aprovecha la redundancia entre archivos. Esto funcionará con la configuración predeterminada siempre que los archivos sean lo suficientemente pequeños.
Con la configuración predeterminada de 2 GB para el tamaño de bloque sólido , un archivo de 16 GB se comprime en realidad como 8 fragmentos separados.
Como ya dijo @Breakthorugh, el diccionario se genera sobre la marcha. Puede verificar esto empíricamente estableciendo el tamaño de bloque sólido en sólido (comprima todos los archivos a la vez) y no sólido (comprima cada archivo por separado).
Aumentar el tamaño del bloque sólido en realidad resultará en una desaceleración, pero puede resultar en una relación de compresión mucho mejor. Por ejemplo, comprimir dos archivos idénticos dará como resultado un archivo casi el doble de grande con una compresión no sólida.
fuente