Author |
Message |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22757 Location: Silicon Valley
|
Я не смог его запустить нормально - он какой-то маленький кусочек хвоста сжимает - как будто с большими файлами работать не умеет... А это кто такие? P.S. Вроде нашёл чегой-то: http://code4k.blogspot.com/2010/12/crinkler-secrets-4k-intro-executable.html, тока он виндовые EXE-шники ведь сжимает...
|
03 Feb 2017 09:52 |
|
|
angry_troll
Doomed
Joined: 08 Apr 2013 04:04 Posts: 449 Location: 213.247.249.139
|
Ну не знаю, может ты его не так запускал? Там дефолтный режим вроде, когда он цепляет лоадер для всяких там комодов. А чтоб просто сжатый поток выдавал, надо какую-то опцию.
_________________ привет засранцу лавру :)
|
03 Feb 2017 09:54 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22757 Location: Silicon Valley
|
Да я вроде правильную опцию выбирал, ну да ладно - народ на него всё равно гонит, что падучий он
|
03 Feb 2017 10:28 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22757 Location: Silicon Valley
|
А вот это мысль (по ходу пьесы выделять контекст и переключаться на соответствующую таблицу хаффмана) - надо будет её поразмыслить как следует, скажем в рамках SHAFF4
|
03 Feb 2017 11:15 |
|
|
angry_troll
Doomed
Joined: 08 Apr 2013 04:04 Posts: 449 Location: 213.247.249.139
|
Ну народ может и гонит, а люди вон на нём умудрялись демы делать, и ничего вроде не падало: http://www.pouet.net/prod.php?which=61133
_________________ привет засранцу лавру :)
|
03 Feb 2017 11:25 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22757 Location: Silicon Valley
|
С опцией компиляции -O2 архиватор работает в 3 раза быстрее
|
04 Feb 2017 12:42 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22757 Location: Silicon Valley
|
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) Думаю это будет самым компактным представлением кодов Хаффмана в виде байтов...
|
05 Feb 2017 03:53 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22757 Location: Silicon Valley
|
Добавил результаты для Exomizer2 - силён, собака...
|
05 Feb 2017 18:45 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22757 Location: Silicon Valley
|
Выложил последнюю версию, где можно менять ключевой байт с FF на что-то другое - в линуксе будучи собранным в GCC все работает, однако в процессе оптимизации что-то серьезно сломалось с точки зрения борландовского компилятора - версия под винду теперь зацикливается... P.S. Новая статистика (SNA-файлы с параметрами по умолчанию теперь на 3 байта больше т.к. каждый блок начинается с ключевого байта FF): P.P.S. Кроме того вроде разобрался с кодом (который писал по ночам в полубессознательном состоянии более 3 лет назад) и слега его ускорил, выкинув безумные свич-конструкции и лишние ветки обхода автокорреляционной матрицы (теперь в 4-6 раз быстрее на разных файлах получается без ухудшения результатов) P.P.P.S. 7 февраля обновил статистику по SHAFF1 (в целом сходится с оценками 3 летней давности) - всё энкодится и декодится
|
05 Feb 2017 19:53 |
|
|
angry_troll
Doomed
Joined: 08 Apr 2013 04:04 Posts: 449 Location: 213.247.249.139
|
можно поиметь тестовые файлики? А то странно даже, хрум уделывает мегалз... И еще, помоему сваливать в одну кучу пакеры (поток байтиков) и архиваторы (файловая система) как-то нечестно...
_________________ привет засранцу лавру :)
|
05 Feb 2017 23:43 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22757 Location: Silicon Valley
|
архиватор от пакера отличается только включением имени файла в тело - я все равно один файл пакую вот архив со SNA, которые я мучаю: https://app.box.com/s/2pih02iwic5cc2zip9wy9zvxut2ac47yнеожиданности видимо связаны с тем, что пока я играюсь со SNA c 16КБ программами, т.е. 2/3 в этом 48-килобайтном SNA-файле это нули и если паковщик умеет их компактно паковать, то он выигрывает (например мой SHAFF может упаковать 16КБ нулей в 9 байт)
|
05 Feb 2017 23:56 |
|
|
angry_troll
Doomed
Joined: 08 Apr 2013 04:04 Posts: 449 Location: 213.247.249.139
|
Вот оно что, это чемпионат по сжиманию нулей оказывается
_________________ привет засранцу лавру :)
|
06 Feb 2017 05:19 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22757 Location: Silicon Valley
|
Ну и это тоже
|
06 Feb 2017 07:25 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22757 Location: Silicon Valley
|
После выкидывания лишних анализов получилось так (с -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 (это "фича" именно Интела - я вроде про это недавно где-то читал)
|
06 Feb 2017 19:36 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22757 Location: Silicon Valley
|
Сделал запаковку-распаковку SHAFF1 Подбиваю статистику - как подобъю, выложу сырцы P.S. Статистику см. выше - на более рандомных файлах чуть-чуть не догоняю MegaLZ и ZX7, но хрум часто обхожу, не говоря уже об LZ4
|
07 Feb 2017 21:12 |
|
|