nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 27 Jun 2017 23:38



Reply to topic  [ 95 posts ]  Go to page Previous  1 ... 3, 4, 5, 6, 7  Next
Недоархиватор SHAFF 
Author Message
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15362
Location: New York
Reply with quote
angry_troll wrote:
Shaos wrote:
(этот формат должен побить всех самодельщиков : )

Главное ещё чтоб exomizer побил.

Кстати, если надо сжать несколько /разных/ блоков, например графика, музло, код, то если их сжимать exomizerом по отдельности -- будет выигрыш по сравнению с тем, если их сжимать одним конкатенированным куском.

кстати, почему exomizerа нет в твоих сравнивалках?

Я не смог его запустить нормально - он какой-то маленький кусочек хвоста сжимает - как будто с большими файлами работать не умеет...

angry_troll wrote:
upd: а заодно какихнить crinklerов/шринклеров?

А это кто такие?

P.S. Вроде нашёл чегой-то: http://code4k.blogspot.com/2010/12/crinkler-secrets-4k-intro-executable.html, тока он виндовые EXE-шники ведь сжимает...


Attachments:
crinkler.gif
crinkler.gif [ 10.64 KiB | Viewed 328 times ]

_________________
:eugeek: https://twitter.com/Shaos1973
03 Feb 2017 12:52
Profile WWW
Doomed

Joined: 08 Apr 2013 07:04
Posts: 351
Location: 213.247.249.139
Reply with quote
Shaos wrote:
Я не смог его запустить нормально - он какой-то маленький кусочек хвоста сжимает - как будто с большими файлами работать не умеет...

Ну не знаю, может ты его не так запускал? Там дефолтный режим вроде, когда он цепляет лоадер для всяких там комодов. А чтоб просто сжатый поток выдавал, надо какую-то опцию.


03 Feb 2017 12:54
Profile
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15362
Location: New York
Reply with quote
angry_troll wrote:
Shaos wrote:
Я не смог его запустить нормально - он какой-то маленький кусочек хвоста сжимает - как будто с большими файлами работать не умеет...

Ну не знаю, может ты его не так запускал? Там дефолтный режим вроде, когда он цепляет лоадер для всяких там комодов. А чтоб просто сжатый поток выдавал, надо какую-то опцию.

Да я вроде правильную опцию выбирал, ну да ладно - народ на него всё равно гонит, что падучий он :)

_________________
:eugeek: https://twitter.com/Shaos1973


03 Feb 2017 13:28
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15362
Location: New York
Reply with quote
angry_troll wrote:
Кстати, если надо сжать несколько /разных/ блоков, например графика, музло, код, то если их сжимать ... по отдельности -- будет выигрыш по сравнению с тем, если их сжимать одним конкатенированным куском.

А вот это мысль (по ходу пьесы выделять контекст и переключаться на соответствующую таблицу хаффмана) - надо будет её поразмыслить как следует, скажем в рамках SHAFF4 :roll:

_________________
:eugeek: https://twitter.com/Shaos1973


03 Feb 2017 14:15
Profile WWW
Doomed

Joined: 08 Apr 2013 07:04
Posts: 351
Location: 213.247.249.139
Reply with quote
Shaos wrote:
народ на него всё равно гонит, что падучий он :)

Ну народ может и гонит, а люди вон на нём умудрялись демы делать, и ничего вроде не падало: http://www.pouet.net/prod.php?which=61133


03 Feb 2017 14:25
Profile
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15362
Location: New York
Reply with quote
angry_troll wrote:
Shaos wrote:
zx48.sna 2 min
zx48k1.sna 2 min
jswilly16k.sna 35 min
chess16k.sna 21 min
chess.sna 47 min
cybotron.sna 28 min
tomahawk.sna 158 min
exolon.sna 141 min
buzzsaw.sna 93 min
bozxle.sna 102 min

НАСТОЛЬКО медленно сделать сжатие -- это надо уметь! :)

С опцией компиляции -O2 архиватор работает в 3 раза быстрее :)

_________________
:eugeek: https://twitter.com/Shaos1973


04 Feb 2017 15:42
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15362
Location: New York
Reply with quote
Trixter (один из авторов демы 8088 MPH) советует мне в SHAFF0 использовать самый редкий байт вместо FF - по прикидкам оно даст около 1% экономии (по идее это можно сделать опциональным), например zx48k1.sna сожмется в 581 байт вместо 590...

P.S. По идее аналогичную ручную подстройку можно добавить и в SHAFF1 - только там надо задавать другое - инвертировать или не инвертировать литералы т.к. по умолчанию литералы с кодами <128 съедают 8 бит, а с кодами >=128 уже 9 - например если сжимаемый файл не ASCII-текст и большинство байтов имеют коды >127 то логичнее литералы инвертнуть, чтобы они занимали меньше места - насколько это может дать экономии пока не понятно - надо смотреть...

P.P.S. А теперь по поводу добавления Хаффмана в SHAFF2 - думаю сделать общую таблицу на весь файл (все блоки) и записывать ее в заголовок (причем по умолчанию можно использовать встроенную заранее нагенеренную таблицу для английского технического текста). Например начало таблицы будет указывать трехбуквенный идентификатор HUF и далее:
#FF nn - где nn количество бит кода для символов следующих после такой команды (#FF #FF будет означать конец таблицы, т.е. таким способом можно задавать коды длиной до 254 битов)
после этого идут описатели кодов символов с указанной длиной:
cc hh...hh - где cc это байт символа (в случае #FF после него будет вставлен #00 чтобы отличить его от команды #FF nn) и далее необходимое количество байтов, кодирующих код Хаффмана для этого символа (код выдвинут влево до упора, т.е. например код 01 будет представлен байтом 01000000, а например код 111111111 будет представлен двумя байтами 11111111 10000000)
Думаю это будет самым компактным представлением кодов Хаффмана в виде байтов...

_________________
:eugeek: https://twitter.com/Shaos1973


05 Feb 2017 06:53
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15362
Location: New York
Reply with quote
Shaos wrote:
Вот так пока выходит (отсортировал по степени сжатия):
Code:
 49179 zx48k1.sna
  1023 zx48k1.sna.mlz
   930 zx48k1.sna.hrm
   718 zx48k1.zip
   604 zx48k1.rar
   594 zx48k1.sna.gz
   590 zx48k1.SNAFF <<<<< SHAFF0
   576 zx48k1.sna.xz
   535 zx48k1.sna.bz2
   502 zx48k1.sna.hst
   290 zx48k1.sna.ex2

 49179 jswilly16k.sna
  7784 jswilly16k.SNAFF <<<<< SHAFF0
  6901 jswilly16k.sna.bz2
  6826 jswilly16k.sna.mlz
  6767 jswilly16k.sna.hrm
  6708 jswilly16k.zip
  6570 jswilly16k.sna.gz
  6355 jswilly16k.rar
  6230 jswilly16k.sna.hst
  5978 jswilly16k.sna.ex2
  5956 jswilly16k.sna.xz

 49179 chess16k.sna
  7921 chess16k.sna.bz2
  7752 chess16k.sna.mlz
  7702 chess16k.sna.hrm
  7662 chess16k.SNAFF <<<<< SHAFF0
  7481 chess16k.zip
  7378 chess16k.sna.gz
  7226 chess16k.rar
  7066 chess16k.sna.hst
  6860 chess16k.sna.xz
  6707 chess16k.sna.ex2

Добавил результаты для Exomizer2 - силён, собака...

_________________
:eugeek: https://twitter.com/Shaos1973


05 Feb 2017 21:45
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15362
Location: New York
Reply with quote
Выложил последнюю версию, где можно менять ключевой байт с FF на что-то другое - в линуксе будучи собранным в GCC все работает, однако в процессе оптимизации что-то серьезно сломалось с точки зрения борландовского компилятора - версия под винду теперь зацикливается...

P.S. Новая статистика (SNA-файлы с параметрами по умолчанию теперь на 3 байта больше т.к. каждый блок начинается с ключевого байта FF):
Code:
 49179 zx48k1.sna
  1023 zx48k1.sna.mlz
   952 zx48k1.PP2 - RNC Pro Pack (method 2)
   930 zx48k1.sna.hrm
   737 zx48k1.LZ4
   718 zx48k1.zip
   604 zx48k1.rar
   594 zx48k1.sna.gz
   593 zx48k1.SNAFF <<<<< SHAFF0
   576 zx48k1.sna.xz
   583 zx48k1.SNAFF <<<<< SHAFF0 (-xFD)
   547 zx48k1.PP1 - RNC Pro Pack (method 1)
   535 zx48k1.sna.bz2
   502 zx48k1.sna.hst
   480 zx48k1.SNAFF <<<<< SHAFF1
   474 zx48k1.ZX7
   290 zx48k1.sna.EX2

 49179 jswilly16k.sna
  7849 jswilly16k.LZ4
  7788 jswilly16k.SNAFF <<<<< SHAFF0
  7750 jswilly16k.SNAFF <<<<< SHAFF0 (-xBA)
  6980 jswilly16k.PP2 - RNC Pro Pack (method 2)
  6901 jswilly16k.sna.bz2
  6826 jswilly16k.sna.mlz
  6767 jswilly16k.sna.hrm
  6708 jswilly16k.zip
  6570 jswilly16k.sna.gz
  6496 jswilly16k.SNAFF <<<<< SHAFF1
  6428 jswilly16k.PP1 - RNC Pro Pack (method 1)
  6396 jswilly16k.ZX7
  6355 jswilly16k.rar
  6230 jswilly16k.sna.hst
  5978 jswilly16k.sna.EX2
  5956 jswilly16k.sna.xz

 49179 chess16k.sna
  7921 chess16k.sna.bz2
  7753 chess16k.LZ4
  7752 chess16k.sna.mlz
  7702 chess16k.sna.hrm
  7666 chess16k.SNAFF <<<<< SHAFF0
  7642 chess16k.SNAFF <<<<< SHAFF0 (-x8E)
  7511 chess16k.PP2 - RNC Pro Pack (method 2)
  7481 chess16k.zip
  7465 chess16k.ZX7
  7378 chess16k.sna.gz
  7226 chess16k.rar
  7182 chess16k.SNAFF <<<<< SHAFF1
  7085 chess16k.PP1 - RNC Pro Pack (method 1)
  7066 chess16k.sna.hst
  6860 chess16k.sna.xz
  6707 chess16k.sna.EX2

 49179 thor.sna
 32557 thor.SNAFF <<<<< SHAFF0
 31211 thor.SNAFF <<<<< SHAFF0 (-xE9)
 29770 thor.LZ4
 27293 thor.sna.bz2
 26970 thor.PP2 - RNC Pro Pack (method 2)
 26643 thor.SNAFF <<<<< SHAFF1
 26291 thor.ZX7
 26164 thor.sna.hrm
 26041 thor.sna.mlz
 25761 thor.PP1 - RNC Pro Pack (method 1)
 25235 thor.zip
 25114 thor.sna.gz
 25031 thor.sna.hst
 24132 thor.rar
 22100 thor.sna.xz
 21788 thor.EX2

 49179 spindlzy.sna
 33584 spindizy.SNAFF <<<<< SHAFF0
 33162 spindlzy.SNAFF <<<<< SHAFF0 (-xDE)
 31465 spindizy.LZ4
 29170 spindizy.sna.bz2
 29152 spindizy.PP2 - RNC Pro Pack (method 2)
 28176 spindizy.sna.hrm
 28850 spindizy.SNAFF <<<<< SHAFF1
 28508 spindizy.ZX7
 28067 spindizy.sna.mlz
 27607 spindizy.PP1 - RNC Pro Pack (method 1)
 27021 spindlzy.zip
 26966 spindizy.sna.gz
 26716 spindizy.sna.hst
 25770 spindizy.EX2
 24696 spindizy.sna.xz

 49179 braxx.sna
 24876 braxx.SNAFF <<<<< SHAFF0
 24370 braxx.SNAFF <<<<< SHAFF0 (-x91)
 22195 braxx.LZ4
 20978 braxx.PP2 - RNC Pro Pack (method 2)
 20526 braxx.bz2
 20390 braxx.sna.hrm
 20299 braxx.SNAFF <<<<< SHAFF1
 20289 braxx.ZX7
 20202 braxx.sna.mlz
 19244 braxx.PP1 - RNC Pro Pack (method 1)
 19106 braxx.gz
 19082 braxx.zip
 18938 braxx.sna.hst
 18523 braxx.EX2
 17024 braxx.sna.xz

P.P.S. Кроме того вроде разобрался с кодом (который писал по ночам в полубессознательном состоянии более 3 лет назад) и слега его ускорил, выкинув безумные свич-конструкции и лишние ветки обхода автокорреляционной матрицы (теперь в 4-6 раз быстрее на разных файлах получается без ухудшения результатов)

P.P.P.S. 7 февраля обновил статистику по SHAFF1 (в целом сходится с оценками 3 летней давности) - всё енкодится и декодится :)

_________________
:eugeek: https://twitter.com/Shaos1973


05 Feb 2017 22:53
Profile WWW
Doomed

Joined: 08 Apr 2013 07:04
Posts: 351
Location: 213.247.249.139
Reply with quote
можно поиметь тестовые файлики? А то странно даже, хрум уделывает мегалз...
И еще, помоему сваливать в одну кучу пакеры (поток байтиков) и архиваторы (файловая система) как-то нечестно...


06 Feb 2017 02:43
Profile
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15362
Location: New York
Reply with quote
angry_troll wrote:
можно поиметь тестовые файлики? А то странно даже, хрум уделывает мегалз...
И еще, помоему сваливать в одну кучу пакеры (поток байтиков) и архиваторы (файловая система) как-то нечестно...

архиватор от пакера отличается только включением имени файла в тело - я все равно один файл пакую :)

вот архив со SNA, которые я мучаю: https://app.box.com/s/2pih02iwic5cc2zip9wy9zvxut2ac47y

неожиданности видимо связаны с тем, что пока я играюсь со SNA c 16КБ программами, т.е. 2/3 в этом 48-килобайтном SNA-файле это нули и если паковщик умеет их компактно паковать, то он выигрывает (например мой SHAFF может упаковать 16КБ нулей в 9 байт)

_________________
:eugeek: https://twitter.com/Shaos1973


06 Feb 2017 02:56
Profile WWW
Doomed

Joined: 08 Apr 2013 07:04
Posts: 351
Location: 213.247.249.139
Reply with quote
Вот оно что, это чемпионат по сжиманию нулей оказывается :D


06 Feb 2017 08:19
Profile
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15362
Location: New York
Reply with quote
angry_troll wrote:
Вот оно что, это чемпионат по сжиманию нулей оказывается :D

Ну и это тоже :)

_________________
:eugeek: https://twitter.com/Shaos1973


06 Feb 2017 10:25
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15362
Location: New York
Reply with quote
Shaos wrote:
angry_troll wrote:
Shaos wrote:
zx48.sna 2 min
zx48k1.sna 2 min
jswilly16k.sna 35 min
chess16k.sna 21 min
chess.sna 47 min
cybotron.sna 28 min
tomahawk.sna 158 min
exolon.sna 141 min
buzzsaw.sna 93 min
bozxle.sna 102 min

НАСТОЛЬКО медленно сделать сжатие -- это надо уметь! :)

С опцией компиляции -O2 архиватор работает в 3 раза быстрее :)

После выкидывания лишних анализов получилось так (с -O2 на Зеоне 2.4 ГГц):

zx48k1.sna - 3 сек (-1 : 4 сек)
jswilly16k.sna - 55 сек (-1 : 2 мин 12 сек)
chess16k.sna - 22 сек (-1 : 55 сек)

И из нового:

thor.sna - 5 мин (-1 : 10 мин 46 сек)
spindizy.sna - 5 мин 4 сек (-1 : 10 мин 13 сек)
braxx.sna - 5 мин 14 сек (-1 : 7 мин 48 сек)

Причём это для SHAFF0 который дальше 4-байтовых копий не идёт, а SHAFF1 будет подольше т.к. опускается до поиска 2-байтовых повторений (8 февраля поставил в скобках окончательные цифры по SHAFF1 - опция -1)

P.S. Починил зацикливание на Интеле - суть в том, что когда я выкинул свичи и перешёл на формулы могло возникать такое: 0xFFFFFFFF << 32 и пока я отлаживался на PowerPC оно ожидаемо вовращало 0, однако пересев обратно на Интел я на двух разных машинах х86 стал получать в этом случае 0xFFFFFFFF и на борланде под WinXP, и на гцц под Линух64 (это "фича" именно Интела - я вроде про это недавно где-то читал)

_________________
:eugeek: https://twitter.com/Shaos1973


06 Feb 2017 22:36
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 02:22
Posts: 15362
Location: New York
Reply with quote
Сделал запаковку-распаковку SHAFF1 :)

Подбиваю статистику - как подобъю, выложу сырцы ;)

P.S. Выложил: https://github.com/shaos/shaff

P.P.S. Статистику см. выше - на более рандомных файлах чуть-чуть не догоняю MegaLZ и ZX7, но хрум часто обхожу, не говоря уже об LZ4 :)

_________________
:eugeek: https://twitter.com/Shaos1973


08 Feb 2017 00:12
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 95 posts ]  Go to page Previous  1 ... 3, 4, 5, 6, 7  Next

Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.