10 September 2010

Пакеры-депакеры

Занимаясь переделкой демо-керналя задумался - а стоит ли пользоваться Hrust'ом, все-таки за 12 лет наверно что и получше появилось. В связи с этим склепал небольшую програмку и протестировал Hrust, MegaLZ и BitBuster. Exomizer почему-то отказался работать, поэтому в тест не попал. В принципе, таблицы с сравнением размеров выкладывали авторы всех пакеров (при этом всегда лучше получался пакер именно этого автора), но я решил проверить на реальных данных, плюс очень критично время распаковки.
В таблице указаны размеры пакованных блоков и время распаковки в фреймах (в скобках время распаковки 32х таких файлов). Файлы не абстрактные - это все части нашей последней демы.
File (size)Hrust (size)MegaLZ (size)BitBuster (size)Hrust (time) MegaLZ (time)BitBuster (time)
d16, 1957 5405235302.16 (69)2.06 (66)1.38 (44)
d17, 16074 166581747917556---
eff00, 13152 31463152318813.94 (446)13.72 (439)9.06 (290)
eff02, 50271326125012716.69 (214)6 (192)4.09 (131)
eff03,  7684814784971.59 (51)1.5 (48)0.78 (25)
eff04, 667241464161414414.31 (458)13.63 (436)8.56 (274)
eff05, 573135753553358812.56 (402)11.66 (373)6.78 (217)
eff06, 872660825918604121.47 (687)20.59 (659)12.97 (415)
eff07, 631428642731277411.75 (376)10.69 (342)6.75 (216)
eff08, 964863096303630720.84 (667)19.66 (629)12.41 (397)
eff09, 55361358131313326 (192)5.16 (165)3.5 (112)
eff12, 1196444274110426522.09 (707)20.41 (653)13.13 (420)
eff14, 40692102209021287.86 (252)7.19 (230)4.22 (135)
Файл d17 состоял из уже пакованных блоков, поэтому не запаковался никем. Интересно было посмотреть на результаты =)
Длина всех упакованных файлов вместе с непакуемым файлом и без него:
  • Hrust - 53014 и 36356
  • MegaLZ - 53061 и 35582
  • BitBuster - 53621 и 36065
Длины депакеров при этом составляют:
  • Hrust - 256 байт (хотя в данном тесте использовался модифицированный JtN'ом для скорости длиной 313 байт)
  • MegaLZ - 110 байт
  • BitBuster - 172 байта
MegaLZ я уже использовал в 1К и некоторых релизах - симпатичный там распаковщик, и жмет он объективно хоть не намного, но лучше остальных. Но в демах буду использовать BitBuster - скорость распаковки у него впечатляет.

8 comments:

nodeus said...

Хорошее исследование =)

moroz1999 said...

у MegaLZ есть PC-упаковщик, работающий с командной строки. Иногда это решает.

psndcj//tbk said...

Так-то я все пакеры из коммандной строки запускал... То есть тут мегалз не решает ничего.

Anonymous said...

а тут пишут, что распаковщик у BitBuster сокращается до 89 байт. откуда у тебя 179? или это оптимизированный под скорость?

psndcj//tbk said...

ну я взял который был в комплекте - там макросами сделана работа с битами, то есть кусок кода постоянно повторяется - при желании можно заменить на вызов процедур - будет меньше во много раз, но соответственно и тормознее.

Vitamin said...

А как насчет Pletter'a?

psndcj//tbk said...

Pletter не попадался на глаза, а ссылка на zxpkru сейчас умерла...

Vitamin said...

http://home.wanadoo.nl/smastijn/pletter.html