Вопрос по pZlib3

Alloc

Пользователь
Приветствую!

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

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

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

Упаковка:
Код:
[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>
Распаковка:
Код:
[External compressor:pZlib]
header    = 0
unpackcmd = pZLib d -t75p - -o - <stdin> <stdout>
Пакую такой цепочкой:

Код:
pZlib+rep:512mb:a99+srep+lzma:a1:mfbt4:d176m:fb128:mc1000:lc8
 

Alloc

Пользователь
Точнее не пару секунд, а 6-7 секунд проходит и начинается распаковка. Кто нибудь подскажите пожалуйста из за чего это происходит или у всех так?
 

L-e-o-N

Пользователь
Точнее не пару секунд, а 6-7 секунд проходит и начинается распаковка. Кто нибудь подскажите пожалуйста из за чего это происходит или у всех так?
pzlib обрабатывает информацию блоками (размер блока задается с помощю параметров, не помню каких нужно в справке смотреть) и пока он блок не обработает то не выпустит не одного байта на выход, как раз в эти 6-7 секунд он и обрабатывает первый блок. Можна уменьшить это время уменьшив размер блока но тогда пострадает ефективность сжатия
 

Alloc

Пользователь
pzlib обрабатывает информацию блоками (размер блока задается с помощю параметров, не помню каких нужно в справке смотреть) и пока он блок не обработает то не выпустит не одного байта на выход, как раз в эти 6-7 секунд он и обрабатывает первый блок. Можна уменьшить это время уменьшив размер блока но тогда пострадает ефективность сжатия
Спасибо большое за ответ, а то я начал думать, что не так что то делаю. А не подскажете еще как подсчитать количество памяти которая будет использоваться во время распаковки с этими параметрами? Я просто смотрю, setup.tmp целых 700 с чем то мб съедает плюс pzlib - 50 мб. Хотя указал d176m и как я понял это как раз и есть количество памяти при распаковки... подскажите пожалуйста
 

L-e-o-N

Пользователь
Спасибо большое за ответ, а то я начал думать, что не так что то делаю. А не подскажете еще как подсчитать количество памяти которая будет использоваться во время распаковки с этими параметрами? Я просто смотрю, setup.tmp целых 700 с чем то мб съедает плюс pzlib - 50 мб. Хотя указал d176m и как я понял это как раз и есть количество памяти при распаковки... подскажите пожалуйста
setup.tmp (unarc.dll - lzma, unarc.dll - rep, cls-srep.dll -srep) нужно смотреть формулу расщета потребляемой памяти для каждого алгоритма. d*m это размер словаря и потребляемая память напрямую зависит от этого параметра (но она также зависит и от других параметров)
Я никогда памяти не расчитывал (все эксперементальным шагом узнавал) но вы используете сразу три алгоритма сжатия судя по параметрам lzma использует 176 - 180 мб памяти (определил на око, возможная неточность). srep - ? (зависит также от размера файла который сжимался, и того насколько сильно было сжатие), по идее после rep-а не должен много кушать. С rep-ом дела не имел по этому сказать чтото сложно, однако большую часть используемой памяти скорее всего использует он (поскольку алгоритм схож со srep-ом, то скорее всего потребляемая память также зависит от размера данных, которые сжимаются, хотя не уверен)rep:*mb это так же размер словаря (см. Алгоритмы сжатия)
 

Alloc

Пользователь
L-e-o-N, спасибо за ответ, теперь более или менее понятно, я и сам обратил внимание, что потребление памяти все таки зависит и от размера самого архива, буду экспериментировать, спасибо еще раз
 

L-e-o-N

Пользователь
L-e-o-N, спасибо за ответ, теперь более или менее понятно, я и сам обратил внимание, что потребление памяти все таки зависит и от размера самого архива, буду экспериментировать, спасибо еще раз
Только rep и srep потребляют память, которая зависит от размера, если убрать их из цепочки то память всегда будет использоватся одинаково
 

L-e-o-N

Пользователь
L-e-o-N, спасибо за ответ, теперь более или менее понятно, я и сам обратил внимание, что потребление памяти все таки зависит и от размера самого архива, буду экспериментировать, спасибо еще раз
Здесь очень хорошо описаны большенство используемых алгоритмов в freearc
 

Alloc

Пользователь
Только rep и srep потребляют память, которая зависит от размера, если убрать их из цепочки то память всегда будет использоватся одинаково
вот этого не знал, залез в справку Srep'а и понял, что можно установить вручную количество ОЗУ при распаковке параметром -mem75p (по умолчанию), собственно за это и переживал, думал на слабых машинах возможны проблемы с нехваткой ОЗУ, как оказалась - зря) :D

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

dixen18

Пользователь
Как побороть сие?
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]
 

dixen18

Пользователь
И такой вопрос - можно как-то в ZTool выводить прогресс обработки файлов как в pZlib? А то непонятно сколько прошло и сколько осталось
 

L-e-o-N

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