Мне часто нужно сжимать файлы, которые очень похожи друг на друга.
В настоящее время я использую 7Zip, который сжимает файл размером 16 ГБ до 1,2 ГБ примерно за 35 минут, используя 8 ядер с настройками Ultra.
Мне кажется, что большая часть этого времени тратится на вычисление словаря для сжатия. Поскольку файлы очень похожи, фактически используемый словарь также похож.
Существует ли инструмент сжатия на базе Windows (7Zip с опцией, о которой я не знаю, или другой инструмент), который может сохранить словарь и повторно использовать этот сохраненный словарь для последующих файлов?
Есть ли лучший способ подойти к проблеме поддержания степени сжатия, аналогичной той, которая у меня есть, при этом сжатие происходит значительно быстрее?
источник
В отличие от алгоритма DEFLATE, LZMA 7-Zip по умолчанию использует сплошное сжатие, которое использует межфайловую избыточность. Это будет работать с настройками по умолчанию, если файлы достаточно малы.
При настройках по умолчанию 2 ГБ для размера сплошного блока файл 16 ГБ фактически сжимается как 8 отдельных блоков.
Как уже сказал @Breakthorugh, словарь генерируется на лету. Вы можете проверить это эмпирически, установив для размера блока Solid значение Solid (сжатие всех файлов одновременно) и Non-solid (сжатие каждого файла отдельно).
Увеличение размера сплошного блока на самом деле приведет к замедлению, но это может привести к гораздо лучшей степени сжатия. Например, сжатие двух одинаковых файлов приведет к увеличению размера архива почти вдвое при нестабильном сжатии.
источник