Как размер словаря влияет на сжатие?

39

Я знаю, что больший размер может привести к лучшей степени сжатия и наоборот. Но есть ли способ, которым я могу решить лучше? .. так как есть так много вариантов 7zip


До сих пор я заметил размер словаря - размер файла дает оптимальное сжатие. размер файла
Здесь файл mb8mb test.aviимеет одинаковую степень сжатия для всех размеров словаря, превышающих 8mb. Тогда это начинает падать.

laggingreflex
источник
2
Да, так как весь файл находится в памяти. Однако это может оказаться невозможным, если вы работаете с мультигигитными файлами. Возврат инвестиций уменьшается по мере роста. Если вам нужен последний 1%, то размер = размер файла. Примечание. Если вы установили намного больший объем данных, размер словаря более 128 МБ увеличит время, необходимое для сжатия файлов.
Кибернард

Ответы:

28

Повторяемые элементы хранятся в словаре, а код назначается в качестве замены.

ЭТО ЗАДАЧА

aaaaaaaaaaaaaaaaaaaaaaaa  0001
bbbbbbbbbbbbbbbbbbbbbbbb  0002
alsdjl;asjdfkl;asdfjkljj  0003

вместо всей строки он просто поместил код на свое место. Чем больше словарь, тем больше кодов он может обработать. Обычно, когда словарь заполняется, он запускает новый на лету. Когда он запускает новый, он пуст и новые коды присваиваются обнаруженным шаблонам.

Как правило, чем больше, тем лучше. Весь словарь хранится в памяти, поэтому вам нужно больше оперативной памяти, чем размер словаря.

Размер словаря зависит от сжимаемости ваших данных, количества файлов, размера и общего размера.

Как правило, 32 МБ более чем достаточно, но если вы сжимаете множество файлов с несколькими гигабайтами, можно использовать гораздо большее число. Большие словари часто замедляют процесс, но в результате получают файл меньшего размера.

cybernard
источник
2
Размер, который вы устанавливаете ограничение для размера словаря, или фактический размер будет? Разве программы (в частности, 7-zip) разумно определяют, действительно ли им нужно заполнять весь разрешенный словарь?
Стэн
1
Да, это предел. При заполнении они либо запускают новый словарь, либо разумно выталкивают старые данные. Если данные для сжатия не будут больше размера словаря, он будет заполнен.
Кибернард
@cybernard "это будет заполнено"? Чтобы было ясно, размер словаря остается меньше предела, когда он не заполнен?
LonnieBest
1
@LonnieBest Да, словарь начинается совершенно пустым. Каждое так много битов / байтов создает новую словарную запись, пока не заполнится.
Кибернард