Занимаясь переделкой демо-керналя задумался - а стоит ли пользоваться Hrust'ом, все-таки за 12 лет наверно что и получше появилось. В связи с этим склепал небольшую програмку и протестировал Hrust, MegaLZ и BitBuster. Exomizer почему-то отказался работать, поэтому в тест не попал. В принципе, таблицы с сравнением размеров выкладывали авторы всех пакеров (при этом всегда лучше получался пакер именно этого автора), но я решил проверить на реальных данных, плюс очень критично время распаковки.
В таблице указаны размеры пакованных блоков и время распаковки в фреймах (в скобках время распаковки 32х таких файлов). Файлы не абстрактные - это все части нашей последней демы.
File (size) | Hrust (size) | MegaLZ (size) | BitBuster (size) | Hrust (time) | MegaLZ (time) | BitBuster (time) |
d16, 1957 | 540 | 523 | 530 | 2.16 (69) | 2.06 (66) | 1.38 (44) |
d17, 16074 | 16658 | 17479 | 17556 | - | - | - |
eff00, 13152 | 3146 | 3152 | 3188 | 13.94 (446) | 13.72 (439) | 9.06 (290) |
eff02, 5027 | 1326 | 1250 | 1271 | 6.69 (214) | 6 (192) | 4.09 (131) |
eff03, 768 | 481 | 478 | 497 | 1.59 (51) | 1.5 (48) | 0.78 (25) |
eff04, 6672 | 4146 | 4161 | 4144 | 14.31 (458) | 13.63 (436) | 8.56 (274) |
eff05, 5731 | 3575 | 3553 | 3588 | 12.56 (402) | 11.66 (373) | 6.78 (217) |
eff06, 8726 | 6082 | 5918 | 6041 | 21.47 (687) | 20.59 (659) | 12.97 (415) |
eff07, 6314 | 2864 | 2731 | 2774 | 11.75 (376) | 10.69 (342) | 6.75 (216) |
eff08, 9648 | 6309 | 6303 | 6307 | 20.84 (667) | 19.66 (629) | 12.41 (397) |
eff09, 5536 | 1358 | 1313 | 1332 | 6 (192) | 5.16 (165) | 3.5 (112) |
eff12, 11964 | 4427 | 4110 | 4265 | 22.09 (707) | 20.41 (653) | 13.13 (420) |
eff14, 4069 | 2102 | 2090 | 2128 | 7.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:
Хорошее исследование =)
у MegaLZ есть PC-упаковщик, работающий с командной строки. Иногда это решает.
Так-то я все пакеры из коммандной строки запускал... То есть тут мегалз не решает ничего.
а тут пишут, что распаковщик у BitBuster сокращается до 89 байт. откуда у тебя 179? или это оптимизированный под скорость?
ну я взял который был в комплекте - там макросами сделана работа с битами, то есть кусок кода постоянно повторяется - при желании можно заменить на вызов процедур - будет меньше во много раз, но соответственно и тормознее.
А как насчет Pletter'a?
Pletter не попадался на глаза, а ссылка на zxpkru сейчас умерла...
http://home.wanadoo.nl/smastijn/pletter.html
Post a Comment