Shuld
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору FreeArc0,67а (18 марта 2011) Метод сжатия –mex7 Особенности Улучшения Ранее я исследовал метод –mex5 http://forum.ru-board.com/topic.cgi?forum=5&topic=35164&start=280#6 [?] Сейчас предлагаю результаты исследования –mex7. Метод сжатия –mex7 полностью выглядит так: rep:512mb+exe+delta+4x4:i0:lzma:16mb:normal:bt4:128, $obj => rep:512mb+delta+4x4:i0:lzma:16mb:normal:bt4:128, $text => dict:128mb:80%:l8192:m400:s100+lzp:160mb:92%:145:h23:d1mb+tempfile+4x4:t3:i0:b7mb:ppmd:16:384mb:c7mb, $wav => tta, $bmp => mm+grzip:8mb:m1:l2048:h15:a Memory for compression 1420mb, decompression 1199mb, cache 256kb (Требования к памяти зависят от процессора, в данном случае Процессор i3-530, 2 ядерный, 4 поточный, Win7 32- разрядная, ОЗУ 4 ГБ) 1) Основной способ сжатия: rep:512mb+exe+delta+4x4:i0:lzma:16mb:normal:bt4:128 При этом параметром по умолчанию для LZMA является :h32mb: 2) Можно его модифицировать в группах exe и $obj, указав :h64m: rep:512mb+exe+delta+4x4:i0:lzma:16mb:h64m:normal:bt4:128 В моих тестах степень сжатия оставалась такой же, скорость сжатия увеличивалась примерно на 6%, но требуемая память немного увеличивалась, до 1548 МБ 3) Альтернативное сжатие всех данных одним методом, без деления на группы: -m7rep+xlzma:16m:h64m:max (что полностью записывается как -mrep:512mb+4x4:lzma:16mb:h64m:normal:bt4:128) Результаты сжатия этих трех вариантов, для одного из тестов, а именно http://forum.ru-board.com/topic.cgi?forum=5&topic=35164&start=80#13 [?] или http://forum.ru-board.com/topic.cgi?forum=5&topic=8076&start=720#21 [?] Метод time: cpu time: real Размер архива Memory Memory for compression for decompression 1) 628 с 184.8 с 846 822 405 1420 mb 1199 mb 2) 588 c 174.9 c 846 822 238 1548 mb 1199 mb 3) 585 c 149.4 c 845 267 002 1604 mb 732 mb Альтернативное сжатие без деления на группы получилось самым быстрым и самым сильным. (Памяти использует чуть больше из-за исключения параметра :i0:. При желании его можно добавить в строку.) В стандартном варианете –mex7 деление на группы при сжатии, видимо уменьшает эффективность использования rep! Мне кажется, что деление на группы эффективно только на очень больших объемах данных?! Подробности. Справедливы только для метода сжатия lzma:…:bt4 (может задаваться в виде lzma:…:max) Сокращенная запись lzma:16m означает lzma:16mb:h32mb Зависимость от параметра «:h» (размер хеша) для сжатия по методу вида –m7rep+exe+delta+4x4:lzma:16mb:h32m:max Метод time: cpu time: real Размер архива Memory Memory for compression for decompression 16m:h128m:max 599 с 179 с 845 250 025 1220 mb 740 mb …:h64m:… 599 с 153 c 845 250 044 1612 mb 740 mb …:h32m:… 641 c 163 c 845 250 196 1484 mb 740 mb …:h16m:… 718 c 182 с 845 251 214 1420 mb 740 mb …:h8m:… 831 c 211 с 845 250 912 1388 mb 740 mb Отмечу, что при параметре :h128m: (и более) создавался tempfile, что приводило к заметному увеличению реального времени сжатия, при уменьшении требований к памяти. С точки зрения оптимального соотношения время/степень сжатия такие режимы я исследую отдельно, и выложу позже. Отмечу так же, что строка 2 отличается от метода 3) в первой таблице наличием exe+delta. Это привело к увеличению времени 149 -> 153, но улучшению сжатия на 16 кб. Общая характеристика метода –mex7 Метод отличается эффективностью, в основных режимах сжатия использует практически всю память и 4 потока, и если только позволяет объем ОЗУ, предпочтительней, чем методы –mex5, –mex6. Булат Просьба оценить мои результаты для использования в FreeArc. | Всего записей: 364 | Зарегистр. 08-12-2010 | Отправлено: 10:40 24-04-2011 | Исправлено: Shuld, 11:23 24-04-2011 |
|