Сейчас на форуме: asfa, bartolomeo, hgdagon (+6 невидимых) |
![]() |
eXeL@B —› Программирование —› архивация кода |
Посл.ответ | Сообщение |
|
Создано: 15 февраля 2006 14:21 · Поправил: doctor Ice · Личное сообщение · #1 пишу вот сейчас архивацию... и помимо сжимания дупов, прогрессий и часто встречающихся клише появилась еще вот такая идея весь код состоит в основном из клише ... cmp xxx, xxx jx xxxxxx ... вот что если часто повторяющиеся клише позасовывать в таблицу и выделить основной диапазон смещений реально ведь в смещениях юзается не более 24бит а не все32.... вод собственно и идея... если кто что знает про такую архивацию то поделитесь плиз. может кто пробовал замутить такое и выяснил что овчинка выделки не стоит... (неохота время тратить на попытку реализации заведомо тухлой идеи) ----- power and the money money and the power ![]() |
|
Создано: 15 февраля 2006 15:04 · Личное сообщение · #2 |
|
Создано: 15 февраля 2006 15:16 · Личное сообщение · #3 |
|
Создано: 16 февраля 2006 04:49 · Поправил: DrGolova · Личное сообщение · #4 дохтур реально достал со своими бредовыми идеями - то нелечащийся вирь с какими-то нелепыми прыжками (хочешь нелечащийся - делай оверврайтер и не парься!). Теперь сжатие по шаблонам - это вобще лол! шаблонный метод вопервых не даст сжатия, вовторых сжатия дать не может по определению, лучше освой хотябы RLE сжатие, а потом хотябы LZ, после этого будет хотябы о чем поговорить. Чувствую что щас он заявит что я ламо и предатель =) ![]() |
|
Создано: 16 февраля 2006 08:12 · Личное сообщение · #5 doctor Ice пишет: может кто пробовал замутить такое и выяснил что овчинка выделки не стоит... (неохота время тратить на попытку реализации заведомо тухлой идеи) Прав, идея заведомо тухлая ![]() Во первых - довольно сложно правильно реализовать, во вторых - коэффициент сжатия будет практически нулевой ![]() ----- "Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels ![]() |
|
Создано: 16 февраля 2006 08:43 · Поправил: doctor Ice · Личное сообщение · #6 |
|
Создано: 16 февраля 2006 13:31 · Поправил: MoonShiner · Личное сообщение · #7 doctor Ice, у любого нормального человека рано или поздно появится неприязнь к носителю бредовых идей=) А вам неплохо бы почитать азы теории сжатия информации. А приводить очевидные контраргументы против бредовых идей просто лень... Хотя DrGolova не поленился и привел=) ЗЫ ДифЕрамбов не дождетесь, не волнуйтесь... Скоро не будет и критики. ![]() |
|
Создано: 16 февраля 2006 14:04 · Личное сообщение · #8 |
|
Создано: 17 февраля 2006 21:55 · Личное сообщение · #9 doctor Ice пишет: весь код состоит в основном из клише ... cmp xxx, xxx jx xxxxxx Если бы ты имел ввиду оптимизацию кода перед сжатием, то думаю многие бы оценили. Только вот я сильно сомневаюсь, что указанных конструкции в любой программе будет больше 0.1%, что даст соответствующую степень сжатия в идеальном случае. PS. Давайте не переходить на личности ![]() ----- Всем не угодишь ![]() |
|
Создано: 18 февраля 2006 02:02 · Личное сообщение · #10 _ЛИЧНУЮ_ неприязнь вызывает только заведение отдельных топиков на каждую "бредовую" идею, причем не в разделе для офтопиков/флеймов, а в новом "программерском", да и еще кроспостинг с васма. Вполне можно завести одну тему "мои идеи", вываливать туда все отходы мозга по мере поступления, и там же получать или охаивания за бред или респекты за хорошую новаторскую идею. Или я не прав? ![]() |
|
Создано: 18 февраля 2006 02:12 · Личное сообщение · #11 А чтобы не быть голословным, охАю тут данную бредовую идею ![]() > весь код состоит в основном из клише > ... > cmp xxx, xxx > jx xxxxxx 1) Таких "клише" будет далеко не большинство в коде, я бы даже сказал что их будет _очень_ мало по отношению к размеру программы, особенно если это не "hello world" и написано это не на асcемблере - современные компиляторы страются разносить как можно дальше сравнения и прыжки. 2) Классический LZ оперирует именно такими "клише", но там они называются "фраза", и ГЕНЕРИРУЮТСЯ АВТОМАТИЧЕСКИ, на основе сжимаемого контента, без привязки к контенту (в смысле код это, данные, или просто мусор) 3) Классический LZ будет а) проще написать б) быстрее работать в) лучше сжимать г) декомпрессор будет меньше Вопросы есть? Могу немного рассказать про оптимизирующие фильтры, которые используют любые уважающие себя пакеры/архиваторы, дают они до 10% прироста сжатия, практически без оверхедов при распаковке. ![]() |
|
Создано: 18 февраля 2006 14:16 · Личное сообщение · #12 я тут полностью согласен с головой ![]() ![]() 4) в LZ имеет смысл копать в сторону lazy evaluation. это еще до 10% прироста сжатия. вообще по техникам оптимизации LZ есть груды литературы. 5) если мы имеем множество повторяющихся шаблонов (заранее известных), то мы опять же можем применить грамотный препроцессинг. идея очень простая - достаточно просто перегрупировать байты в куске, совпадающем с шаблоном таким образом, чтобы байты имеющие произвольное значение шли последними (первыми)..е. из ABC*DE*F мы делаем ABCDEF** 6) высказанная идея бредовая в постановке. ибо можно применить препроцессинг. но попадалось мне на глаза пару статеек на тему сжатия кода, где предлагалась метода свертки типовых конструкций генерируемых некоторыми компиляторами в предопределенные коды. но опять же это на любителя-мазохиста имхо ![]() ![]() |
|
Создано: 18 февраля 2006 22:14 · Личное сообщение · #13 DrGolova пишет: Могу немного рассказать про оптимизирующие фильтры, которые используют любые уважающие себя пакеры/архиваторы, дают они до 10% прироста сжатия, практически без оверхедов при распаковке. Расскажи. Relayer пишет: вообще по техникам оптимизации LZ есть груды литературы. Почитаем когда-нибудь. ![]() DrGolova пишет: Вполне можно завести одну тему "мои идеи", вываливать туда все отходы мозга по мере поступления, и там же получать или охаивания за бред или респекты за хорошую новаторскую идею. Или я не прав? Не знаю, может быть и можно все идеи в один топик, а может и нет (обсуждения требуются, что превартится в кашу при большом числе разных идей). ----- Всем не угодишь ![]() |
|
Создано: 20 февраля 2006 03:43 · Личное сообщение · #14 |
|
Создано: 20 февраля 2006 09:06 · Поправил: doctor Ice · Личное сообщение · #15 кажется меня не поняли =( я не имел ввиду искать заранее подготовленные клише! я имел ввиду пройтись по коду дизасмом и искать блоки повторяющися наборов команд не обращая внимания на операнды... операнды зачастую оффсеты которые зачастую уложатся в диапазон 64к итого ворд вместо дворда.... ЗЫ да вот еще обсуждать идеи мне кажется гораздо более интересным и полезным чем обсуждать - а почему вот этот кусок кода у меня не работает или че нужно делать чтобполучилось вот так... а ведь именно с этим в основном ходят на форум... почему прийти на форум с проблемой это нормально а с идейй которую хочеш развить и обсудить это плохо? может тогда стоит сделать еще одну ветку программирование для новичков-чайников и просто глупых. чтобы мудрые не раздражались натыкаясь на глупые вопросы и бредовые идеи. ----- power and the money money and the power ![]() |
|
Создано: 20 февраля 2006 23:28 · Личное сообщение · #16 DrGolova Если на пальцах, то суть LZW в том, чтобы заменить повторяющиеся последовательности байт(строки) на так называемые "коды", которые изначально подразумеваются гораздо меньшими по размеру(обычно 9-15 бит). На степень сжатия влияет также так называемое "окно" - размер области в которой компрессор ищет совпадающие строки. Современные компрессоры умело оперируют им, подстраивая его размер под анализируемые блоки данных. Например, оперируя только 10-битным кодами, мы имеем 256 кодов для одиночных байт и соответственно 1024-256 кодов для строк(различных сочетаний байтов). Соответственно, чем больше совпадений строк и их длина, тем более качественно сжатие мы получим в итоге. Хранение динамической таблицы всех составленных строк и соответствующих "кодов" для последующей распаковки в LZW не требуется, ибо в момент распаковки они легко восстанавливаются также динамически. ![]() |
|
Создано: 20 февраля 2006 23:28 · Личное сообщение · #17 |
|
Создано: 21 февраля 2006 09:07 · Личное сообщение · #18 |
|
Создано: 21 февраля 2006 09:25 · Личное сообщение · #19 |
|
Создано: 21 февраля 2006 09:53 · Личное сообщение · #20 |
|
Создано: 21 февраля 2006 10:11 · Личное сообщение · #21 |
![]() |
eXeL@B —› Программирование —› архивация кода |