1. Уважаемые гости и пользователи форума.
    Администрация настоятельно рекомендует не регистрировать несколько аккаунтов для одного пользователя. При выявлении наличия мультиаккаунтов будут заблокированы все учетные записи данного пользователя.
    Аккаунты, зарегистрированные на временную почту будут также заблокированы.

Вопрос по pZlib3

Тема в разделе "Прекомпрессоры и препроцессоры", создана пользователем Alloc, 16 ноя 2017.

  1. Ветеран

    Регистрация:
    2 май 2013
    Сообщения:
    88
    Симпатии:
    1
    Приветствую!

    Я слышал много положительных отзывов на этом сайте об pZlib как хорошая альтернатива Precomp'у и решил попробовать его. Так как я новичок, многое пока еще не понятно, поэтому попытаюсь спросить у знающих людей.

    Вообщем после нажатия на кнопку Install в своем инсталляторе, он пару секунд думает и только потом начинается распаковка (идут проценты), с Precomp'ом распаковка начинается сразу после нажатия. Я вот думаю, возможно я где-то ошибся или это особенность pZlib?

    Использую свежую версию, arc.ini выглядит так:

    Упаковка:
    Код (Text):

    [External compressor:srep]
    header = 0
    packcmd   = srep {options} -a1 -m5f -l128 $$arcdatafile$$.tmp $$arcpackedfile$$.tmp
    unpackcmd = srep {options} -d -s - - <stdin> <stdout>

    [External compressor:pZlib]
    header    = 0
    packcmd   = pZLib e -m2 -t8 - -o - <stdin> <stdout>
    unpackcmd = pZLib d -t75p - -o - <stdin> <stdout>
    Распаковка:
    Код (Text):
    [External compressor:pZlib]
    header    = 0
    unpackcmd = pZLib d -t75p - -o - <stdin> <stdout>
    Пакую такой цепочкой:

    Код (Text):
    pZlib+rep:512mb:a99+srep+lzma:a1:mfbt4:d176m:fb128:mc1000:lc8
     
  2. Ветеран

    Регистрация:
    2 май 2013
    Сообщения:
    88
    Симпатии:
    1
    Точнее не пару секунд, а 6-7 секунд проходит и начинается распаковка. Кто нибудь подскажите пожалуйста из за чего это происходит или у всех так?
     
  3. Ветеран

    Регистрация:
    1 дек 2015
    Сообщения:
    103
    Симпатии:
    20
    Пол:
    Мужской
    pzlib обрабатывает информацию блоками (размер блока задается с помощю параметров, не помню каких нужно в справке смотреть) и пока он блок не обработает то не выпустит не одного байта на выход, как раз в эти 6-7 секунд он и обрабатывает первый блок. Можна уменьшить это время уменьшив размер блока но тогда пострадает ефективность сжатия
     
    Alloc нравится это.
  4. Ветеран

    Регистрация:
    2 май 2013
    Сообщения:
    88
    Симпатии:
    1
    Спасибо большое за ответ, а то я начал думать, что не так что то делаю. А не подскажете еще как подсчитать количество памяти которая будет использоваться во время распаковки с этими параметрами? Я просто смотрю, setup.tmp целых 700 с чем то мб съедает плюс pzlib - 50 мб. Хотя указал d176m и как я понял это как раз и есть количество памяти при распаковки... подскажите пожалуйста
     
  5. Ветеран

    Регистрация:
    1 дек 2015
    Сообщения:
    103
    Симпатии:
    20
    Пол:
    Мужской
    setup.tmp (unarc.dll - lzma, unarc.dll - rep, cls-srep.dll -srep) нужно смотреть формулу расщета потребляемой памяти для каждого алгоритма. d*m это размер словаря и потребляемая память напрямую зависит от этого параметра (но она также зависит и от других параметров)
    Я никогда памяти не расчитывал (все эксперементальным шагом узнавал) но вы используете сразу три алгоритма сжатия судя по параметрам lzma использует 176 - 180 мб памяти (определил на око, возможная неточность). srep - ? (зависит также от размера файла который сжимался, и того насколько сильно было сжатие), по идее после rep-а не должен много кушать. С rep-ом дела не имел по этому сказать чтото сложно, однако большую часть используемой памяти скорее всего использует он (поскольку алгоритм схож со srep-ом, то скорее всего потребляемая память также зависит от размера данных, которые сжимаются, хотя не уверен)rep:*mb это так же размер словаря (см. Алгоритмы сжатия)
     
    Alloc нравится это.
  6. Ветеран

    Регистрация:
    2 май 2013
    Сообщения:
    88
    Симпатии:
    1
    L-e-o-N, спасибо за ответ, теперь более или менее понятно, я и сам обратил внимание, что потребление памяти все таки зависит и от размера самого архива, буду экспериментировать, спасибо еще раз
     
  7. Ветеран

    Регистрация:
    1 дек 2015
    Сообщения:
    103
    Симпатии:
    20
    Пол:
    Мужской
    Только rep и srep потребляют память, которая зависит от размера, если убрать их из цепочки то память всегда будет использоватся одинаково
     
    Alloc нравится это.
  8. Ветеран

    Регистрация:
    1 дек 2015
    Сообщения:
    103
    Симпатии:
    20
    Пол:
    Мужской
    Здесь очень хорошо описаны большенство используемых алгоритмов в freearc
     
    Alloc нравится это.
  9. Ветеран

    Регистрация:
    2 май 2013
    Сообщения:
    88
    Симпатии:
    1
    вот этого не знал, залез в справку Srep'а и понял, что можно установить вручную количество ОЗУ при распаковке параметром -mem75p (по умолчанию), собственно за это и переживал, думал на слабых машинах возможны проблемы с нехваткой ОЗУ, как оказалась - зря) :D

    спасибо за ссылку, буду изучать)
     

Поделиться этой страницей