uShell
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: в одном из моих архивов (просто свалка разных конфигов софта, особо не парился за словари в нём), на разные файлы пишет про словарь на 128 МБ и на 32 МБ, зависимо от файла | Цитата: RAR не допускает в solid потоке рост размера словаря и при необходимости меняет его размер у начала потока автоматически. Уменьшение размера при добавлении новых файлов допускается | Тут есть один интересный момент. Я заметил, что в версиях 6.xx сжатие сильно разных по размеру файлов несколько отличается в случаях, когда оно осуществляется одной операцией и когда несколькими, с разными словарями. Конкретно, увеличение размера словаря далеко за пределы размера файла (точнее, файла плюс предшествующего ему solid-потока) иногда ухудшает сжатие. Порядок файлов в solid-архиве один и тот же, так что на него списать изменение размера нельзя. Соответственно, возможен трюк: если нужно сжать несколько файлов разного размера в один solid-архив, может быть выгодно разбить операцию на несколько этапов: сначала сжать маленькие - с маленьким словарём - а затем добавить большие. Вывод: при добавлении новых файлов к solid-архиву с большим словарём существующие не пережимаются - у них в заголовке просто увеличивается размер словаря. Эта операция принципиально возможна для любых алгоритмов со скользящим словарём, если только на размер словаря жёстко не завязаны размеры полей в сжатом потоке. Например, для LZMA я подменял размер словаря в заголовке: до тех пор, пока реально не использовались смещения, вылетающие за словарь (в частности - пока размер распакованных данных был меньше словаря), распаковка шла нормально. А вот с уменьшением есть вопросы. Мне всегда казалось, что обновление архива подтягивает заданный размер словаря до максимального - т.е. уменьшение невозможно в принципе! Хотя возможно, что меня сбивало с толку поле "размер словаря", которое и подтягивается к максимуму. Хотелось бы прояснить эту ситуацию у EugeneRoshal: - В каких случаях WinRAR 7 принимает решение скопировать сжатый поток, а не пересжать его с новыми настройками?
- Кроме случаев из предыдущего пункта и указания запредельно большого словаря, всегда ли при добавлении файла в существующий solid-архив WinRAR использует заданный размер словаря?
- Было ли у прошлых версий (хотя бы от 4.xx) иное поведение?
|