Freqüentemente, tenho a necessidade de compactar arquivos muito parecidos entre si.
Atualmente, uso o 7Zip, que comprime um arquivo de 16 GB para 1,2 GB em cerca de 35 minutos, usando 8 núcleos com configurações Ultra.
Parece-me que grande parte desse tempo é gasto computando o dicionário para usar na compactação. Como os arquivos são altamente semelhantes, o dicionário realmente usado provavelmente também é semelhante.
Existe uma ferramenta de compactação baseada no Windows (7Zip com uma opção que eu não conheço ou uma ferramenta diferente) que pode salvar o dicionário e reutilizá-lo nos arquivos subseqüentes?
Existe uma maneira melhor de abordar o problema de manter uma taxa de compressão semelhante à que eu tenho, enquanto comprime significativamente mais rápido?
fonte
Diferentemente do algoritmo DEFLATE, o LZMA do 7-Zip usa compactação sólida por padrão, o que tira proveito da redundância entre arquivos. Isso funcionará com as configurações padrão, desde que os arquivos sejam pequenos o suficiente.
Com as configurações padrão de 2 GB para o tamanho do Solid Block , um arquivo de 16 GB é realmente compactado como 8 blocos separados.
Como o @Breakthorugh já disse, o dicionário é gerado em tempo real. Você pode verificar isso empiricamente definindo o tamanho do bloco sólido como Sólido (compactar todos os arquivos de uma vez) e Não sólido (compactar cada arquivo separadamente).
Aumentar o tamanho do Solid Block resultará em uma desaceleração, mas poderá resultar em uma taxa de compactação muito melhor. Por exemplo, compactar dois arquivos idênticos resultará em um arquivo morto quase o dobro da compactação não sólida.
fonte