6

У меня есть набор файлов, которые я хотел бы сжать, и я знаю, что они являются повторяющимися и сжимаемыми, но 7zip выбирает неоптимальный порядок сжатия файлов и не может воспользоваться их сжимаемостью. Как я могу заставить 7zip сжать файлы в другом порядке?

Файлы, которые я хочу сжать, следующие:

  • PDF-файл объемом 200 МБ, содержащий большое количество встроенных файлов JPG
  • 190 МБ файлов JPG, каждый из которых отдельно встроен в PDF
  • Около 500 МБ разных других умеренно сжимаемых файлов

Я знаю, что 7zip может воспользоваться повторением PDF и JPG, потому что, когда я архивирую только PDF и JPG вместе, я получаю степень сжатия 47%. Но когда я пытаюсь включить 500 МБ других файлов, 7zip сначала сжимает файлы JPG, а затем другие данные, и к тому времени, когда он попадает в PDF, алгоритм сжатия должен был «забыть» о файлах JPG, поскольку PDF вряд ли сжато на всех.

Используя 7-zip 9.32 alpha, используя формат архива 7z, уровень ультра сжатия, алгоритм LZMA2, размер словаря 256 МБ, размер 128 слов, размер сплошного блока 4 ГБ и 2 потока ЦП, я получаю следующие коэффициенты сжатия:

  • Только PDF: 93%
  • Только JPG: 95%
  • PDF и JPG вместе: 47%
  • Разный только файлы: 44%
  • Разный файлы и PDF: 55%
  • Разный файлы и PDF и JPG: 63%

Так как разное файлы сжимаются до 44% от их первоначального размера, а PDF и JPG вместе сжимаются до 47%, я ожидаю, что все вместе будет сжимаемым где-то на нижнем уровне 44-47%, но из-за плохого порядка файлы 7zip, я получаю значительно худший результат.

Я пытался изменить порядок сжатия файлов 7zip, играя с датами создания, изменения и доступа к файлам. Я попытался переместить файлы в другую папку и скопировать их обратно, чтобы они последовательно перезаписывались на диск. Я даже попытался заархивировать все файлы JPG в zip-файле со сжатием на уровне магазина, чтобы их размер приблизительно соответствовал формату PDF. Независимо от того, что я делаю, я не могу заставить 7zip сжать PDF и JPG без разницы. файлы между ними.

Есть идеи? Я не могу увеличить размер словаря из-за ограничений памяти.

2 ответа2

4

Мне удалось решить эту проблему. Решением было создать архив, содержащий только разные файлы, и после этого выбрать "добавить в архив" в контекстном меню проводника, выбирая как PDF, так и JPG. В 7zip-диалоге "Добавить в архив" я выбрал те же настройки сжатия и имя архива, что и раньше.

Это сжимало PDF и JPG вместе, полностью используя их избыточность, а затем добавляло их в существующий архив. Это привело к общей степени сжатия 45%, именно то, что я искал.

0

PDF и JPG сами сжаты. Сжать уже сжатый файл намного сложнее, чем несжатый. Так что нет, алгоритм сжатия не "забыт" - он больше похож на добавление zip-файла в другой zip-файл (при сжатии происходит очень мало).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .