| | 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
 | 
 |