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
    Сообщения:
    122
    Симпатии:
    24
    Пол:
    Мужской
    pzlib обрабатывает информацию блоками (размер блока задается с помощю параметров, не помню каких нужно в справке смотреть) и пока он блок не обработает то не выпустит не одного байта на выход, как раз в эти 6-7 секунд он и обрабатывает первый блок. Можна уменьшить это время уменьшив размер блока но тогда пострадает ефективность сжатия
     
    Alloc нравится это.
  4. Ветеран

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

    Регистрация:
    1 дек 2015
    Сообщения:
    122
    Симпатии:
    24
    Пол:
    Мужской
    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
    Сообщения:
    122
    Симпатии:
    24
    Пол:
    Мужской
    Только rep и srep потребляют память, которая зависит от размера, если убрать их из цепочки то память всегда будет использоватся одинаково
     
    Alloc нравится это.
  8. Ветеран

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

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

    спасибо за ссылку, буду изучать)
     
  10. Ветеран

    Регистрация:
    18 сен 2014
    Сообщения:
    331
    Симпатии:
    41
    Пол:
    Мужской
    Как побороть сие?
    Microsoft Windows [Version 10.0.16299.248]
    (c) Корпорация Майкрософт (Microsoft Corporation), 2017. Все права защищены.

    e:\ScriptIS_UPD4\include>arc t 1.dxn
    FreeArc 0.67 (March 15 2014) testing archive: 1.dxn
    Testing 42 files, 1,575,372,030 bytes. Processed 0.0%
    lolz v21a7 [Jan 2 2018 13:04:16]

    using large pages for: thread buf (18'432 kb)
    using large pages for: thread buf (18'432 kb)
    using large pages for: dictionary (67'584 kb)
    using large pages for: thread buf (20'480 kb)
    using large pages for: thread buf (20'480 kb)
    using large pages for: dictionary (67'584 kb)
    using large pages for: thread buf (22'528 kb)
    using large pages for: thread buf (22'528 kb)
    using large pages for: thread buf (20'480 kb)
    using large pages for: thread buf (20'480 kb)
    using large pages for: dictionary (67'584 kb)
    using large pages for: dictionary (67'584 kb)
    12.8% ken.
    WARNING: CRC failed in "Game\Levels\tank\terraintexture.pak". File is b 14.2%
    WARNING: CRC failed in "Game\Levels\island\terraintexture.pak". File is b 16.4%
    WARNING: CRC failed in "Game\Levels\ice\terraintexture.pak". File is b 18.5%
    WARNING: CRC failed in "Game\Levels\sphere\terraintexture.pak". File is b 19.1%
    WARNING: CRC failed in "Game\Levels\harbor\terraintexture.pak". File is broken.
    WARNING: CRC failed in "Game\Levels\village\terraintexture.pak". File is b 26.8%
    WARNING: CRC failed in "Game\Levels\ascension\terraintexture.pak". File is b 28.5%
    WARNING: CRC failed in "Game\Levels\Multiplayer\IA\Quarry\level.pak". File is broken.
    WARNING: CRC failed in "Ga 29.5%els\Multiplayer\PS\Refinery\level.pak". File is broken.
    WARNING: CRC failed in "Game\Levels\Multiplayer\IA\Steelmill\level.pak". File is b 31.3%
    WARNING: CRC failed in "Game\Levels\Multiplayer\IA\Outpost\level.pak". File is broken.
    WARNING: CRC failed in "Game\Levels\Multiplayer\PS\Plantation\level.pak". File is b 33.5%
    WARNING: CRC failed in "Game\Levels\ice\level.pak". File is broken.
    WARNING: CRC failed in "Game\Levels\mine\level.pak". File is broken.
    WARNING: CRC failed in "Game\Levels\sphere\level.pak". File is broken.
    WARNING: CRC failed in "Game\Levels\Multiplayer\PS\Shore\level.pak". File is b 43.7%
    WARNING: CRC failed in "Game\Levels\Multiplayer\PS\Beach\level.pak". File is b 44.9%
    WARNING: CRC failed in "Game\Levels\core\level.pak". File is b 47.7%
    WARNING: CRC failed in "Game\Levels\harbor\level.pak". File is broken.
    WARNING: CRC failed in "Game\Levels\village\level.pak". File is b 54.6%
    WARNING: CRC failed in "Game\Levels\rescue\level.pak". File is b 57.5%
    WARNING: CRC failed in "Game\Levels\tank\level.pak". File is b 62.9%
    WARNING: CRC failed in "Game\Levels\Multiplayer\PS\Mesa\level.pak". File is broken.
    WARNING: CRC failed in "Game\Levels\core\terraintexture.pak". File is b 63.4%
    WARNING: CRC failed in "Game\Levels\fleet\level.pak". File is broken.
    WARNING: CRC failed in "Game\Levels\fleet\levellm.pak". File is broken.
    WARNING: CRC failed in "Game\Levels\fleet\terraintexture.pak". File is b 67.7%
    WARNING: CRC failed in "Game\Levels\island\level.pak". File is b 69.1%
    WARNING: CRC failed in "Game\Levels\Multiplayer\PS\Shore\terraintexture.pak". File is broken.
    WARNING: CRC failed in "Game\Levels\Multiplayer\PS\Beach\terraintexture.pak". File is b 70.0%
    WARNING: CRC failed in "Game\Levels\mine\terraintexture.pak". File is broken.
    WARNING: CRC failed in "Game\Levels\Multiplayer\PS\Plantation\terraintexture.pak". File is b 71.6%
    WARNING: CRC failed in "Game\Levels\Multiplayer\PS\Mesa\terraintexture.pak". File is broken.
    WARNING: CRC failed in "Game\Levels\Multiplayer\IA\Armada\level.pak". File is broken.
    WARNING: CRC failed in "Game\Levels\Multiplayer\IA\Armada\terraintexture.pak". File is broken.
    WARNING: CRC failed in "Game\Levels\Multiplayer\IA\Outpost\terraintexture.pak". File is broken.
    WARNING: CRC failed in "Game\Levels\Multiplayer\PS\Refinery\terraintexture.pak". 72.4%is broken.
    WARNING: CRC failed 72.6%me\Levels\Multiplayer\I 72.6%ry\terraintexture 72.6% File is broken.
    WARNING: CRC failed in "Game\Levels\Multiplayer\IA\Steelmill\terraintexture.pak". File is b 80.8%
    WARNING: CRC failed in "Game\Levels\rescue\terraintexture.pak". File is b 91.8%
    lolz v21a7 [Jan 2 2018 13:04:16]
     
  11. Ветеран

    Регистрация:
    3 фев 2014
    Сообщения:
    144
    Симпатии:
    31
    паковать в один поток и только в выходящий временный файл
    на входе можно оставить stdin
     
  12. Ветеран

    Регистрация:
    18 сен 2014
    Сообщения:
    331
    Симпатии:
    41
    Пол:
    Мужской
    toolame, Получилось без ошибок с помощью ZTool
     
  13. Ветеран

    Регистрация:
    18 сен 2014
    Сообщения:
    331
    Симпатии:
    41
    Пол:
    Мужской
    И такой вопрос - можно как-то в ZTool выводить прогресс обработки файлов как в pZlib? А то непонятно сколько прошло и сколько осталось
     
  14. Ветеран

    Регистрация:
    1 дек 2015
    Сообщения:
    122
    Симпатии:
    24
    Пол:
    Мужской
    Если использовать stdin/stdout тогда весь прогресс будет выводить freearc:
    Если у вас нет алгоритмов которые работают с временными файлами тогда 0-100%
    Если есть алгоритмы которые работают с временными файлами тогда с вероятностью в 90% ztool будет работать 0-10%
    а дальше обработка временных файлов и остальные алгоритмы (однако бывают ситуации когда много файлов выходит за пределы 10%, у меня максимум было около 32% на Age of Empires III)
     

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