User Tag List

Страница 10 из 26 ПерваяПервая ... 67891011121314 ... ПоследняяПоследняя
Показано с 91 по 100 из 252

Тема: Сжатие данных

  1. #91

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,391
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Сократил (прямой на 4, обратный на 3 байта) и немного ускорил распаковщик zx0.
    Распаковщик zx2 сократил на байт, скорость не изменилась.
    Интересно, что у zx0 и zx2 примерно одинаково масштабировался размер, варианты для 8080 в 1.37-1.39 раза больше, чем для z80. Понятно, что использованные команды и их сочетания примерно одинаковые, но все равно интересно получилось.
    Еще вспомнил и выложил распаковщик shrinklera для x86 (ему хватает 8088/8086).

    Эти 3 пользователя(ей) поблагодарили ivagor за это полезное сообщение:

    Improver(16.08.2021), Oleg N. Cher(17.08.2021), svofski(16.08.2021)

  2. #91
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #92

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,391
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Сократил прямой zx0 еще на 2 байта и чуть-чуть ускорил.
    Попробовал посчитать вклад отдельных отличий z80 от 8080 в разницу размеров версий (всего +23 байта):
    1. ldir - +13 байт
    2. jr vs j* - +5 байт
    3. Неаккумуляторные команды ротации - +3 байта
    4. Дополнительный регистр - +2 байта
    Думаю, что граница оптимизации по размеру или достигнута или совсем рядом.

    Эти 3 пользователя(ей) поблагодарили ivagor за это полезное сообщение:

    Improver(17.08.2021), Oleg N. Cher(17.08.2021), svofski(17.08.2021)

  4. #93

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,391
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В zx2 заметил, что с опцией -y можно сократить на байт, соответственно и минимальный размер распаковщика уменьшился до 66 байт

  5. #94

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,391
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    И еще оптимизировал вариант zx2 с опциями -y -b. Вижу в этом сразу 2 плюса:
    1. Минимальный (обратный) вариант стал на байт короче - 65 байт.
    2. Избавился от перекрестного влияния опций на размер, теперь каждая опция убавляет заданное число байт независимо от других, проще понять, что выбрать.

    Этот пользователь поблагодарил ivagor за это полезное сообщение:

    Oleg N. Cher(21.08.2021)

  6. #95

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,391
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Небольшой комментарий по поводу последних модификаций ZX0.
    1. Оптимизация обратного распаковщика для z80 не вдохновила, если сделать аналогично для 8080, то весь эффект ограничивается небольшим замедлением распаковщика.
    2. Смена формата упаковщика для прямого сжатия еще менее интересна. Распаковщик 8080 с ее учетом становится на байт длиннее и чуть медленнее. Проблем тут не возникает, можно пользоваться или предыдущей версией упаковщика или последней с опцией -c. По степени сжатия у v1 и v2 разницы никакой, только распаковщики v2 для z80 на байт компактнее и чуть-чуть быстрее.

  7. #96

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,391
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Einar Saukas выложил экспериментального соперника для своего zx0 - zx5, а я сделал вариант распаковщика для 8080. Официально экспериментальность влияет на скорость сжатия (очень-очень-очень медленно) и в принципе на возможность оптимального сжатия некоторых файлов. Скорость сжатия меня не сильно волнует, один раз сжимаем, потом всю жизнь пользуемся. А вот то, что из моих тестовых файлов (21 штука) один не получилось сжать оптимально - это немного печально, но не смертельно. Больше расстраивает то, что большинство моих файлов zx5 сжал хуже, чем zx0. Если учитывать размер распаковщика, то zx5 выиграл на 3 файлах из 21. В общем если размер упакованного файла очень критичен и zx0 немного не дожимает, можно попробовать zx5. Если zx5 не помог, то остаются exomizer и shrinkler, но их распаковщики еще больше по размеру и еще медленнее, особенно shrinkler. Распаковщик zx5 я оптимизировал по размеру, но с ограничением - без использования самомодифицирующегося кода. С самомодификацией можно немного ускорить и сократить.
    Последний раз редактировалось ivagor; 05.10.2021 в 19:04. Причина: исправил "упаковщики" на "распаковщики"

    Эти 2 пользователя(ей) поблагодарили ivagor за это полезное сообщение:

    Oleg N. Cher(06.10.2021), svofski(05.10.2021)

  8. #97

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,391
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Хочется чем-то заполнить пробел между zx0 и shrinklerом. Первое, что приходит в голову - LZ+Хаффман. Из этой оперы есть распаковщики формата Deflate для z80, один из них (samflate, поддерживает контейнер gzip) я попробовал.
    1. Степень сжатия. Для максимального сжатия использовал 7zip с уровнем сжатия ultra. Неожиданно оказалось, что на моем наборе файлов deflate расположился между zx0 и zx1. Некоторые файлы сжал лучше, некоторые хуже, победить zx0 не получилось.
    2. Скорость распаковщика. Распаковывает медленнее exomizera, но все равно намного быстрее shrinklera. Хотелось бы быстрее, но и так терпимо.
    3. Размер распаковщика. А вот тут совсем беда - 2 Кб + нужно место для таблиц.
    Примеривался я к deflate с прицелом на конверсию для 8080, но по совокупности полученных результатов конверсить расхотелось.

    Также более подробно потестировал unrar 0.61 для z80, про который уже немного писал раньше. Он поддерживает формат rar 2.0 и по степени сжатия на моем наборе файлов оказался очень близок к deflate в исполнении 7zip, между zx0 и deflate. Но когда начал тестировать распаковку из 5 первых попробованных файлов правильно распаковались только 2, дальше не стал пробовать. Если доработают можно будет вернуться, а пока для меня rar отпадает.

    Итоги:
    1. На базе samflate можно сделать распаковщик gzip для вектора с z80, но вроде особой потребности в этом нет.
    2. Нужен более удобный для слабосильных ретрокомпьютеров вариант формата LZ+Хаффман, чтобы размер распаковщика был сравним со shrinklerом или чуть больше.

    Этот пользователь поблагодарил ivagor за это полезное сообщение:

    Oleg N. Cher(23.10.2021)

  9. #98

    Регистрация
    16.11.2014
    Адрес
    г. Абакан
    Сообщений
    70
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    19 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ivagor,
    Под п.2 из существующих более-менее подходит RIP и mRIP.

  10. #99

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,391
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Eugene85, я читал про rip (и даже писал). Сейчас меня от более близкого знакомства с rip/mrip отталкивают две вещи:
    1. Нет упаковщика для PC, или я его просмотрел.
    2. По степени сжатия, насколько я понял, уступает rar, т.е. уступает и zx0, что еще снижает интерес.

  11. #100

    Регистрация
    24.08.2012
    Адрес
    г. Волжский
    Сообщений
    458
    Спасибо Благодарностей отдано 
    792
    Спасибо Благодарностей получено 
    268
    Поблагодарили
    103 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Написал для Вектора демку - получилось 274 байта, а нужно 256 байт.
    Для интереса попробовал 7zip-ом упаковать - получилось 386 байт
    Попробовал zip-ом упаковать - получилось 412 байт
    Попробовал gzip-ом упаковать - получилось 286 байт
    Т.е. итоговый файл больше чем исходный.
    Я не очень хорошо ориентируюсь в упаковщиках, поэтому подскажите
    каким упаковщиком и распаковщиком лучше воспользоваться для Вектора ?

Страница 10 из 26 ПерваяПервая ... 67891011121314 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Архивирование, сжатие, упаковка.
    от GriV в разделе Программирование
    Ответов: 30
    Последнее: 22.07.2019, 17:25
  2. Существует ли идеальное сжатие без потери данных?
    от CodeMaster в разделе Программирование
    Ответов: 35
    Последнее: 06.10.2017, 00:15
  3. RLE сжатие (покритикуйте)
    от Vladson в разделе Программирование
    Ответов: 12
    Последнее: 16.03.2008, 12:29
  4. Ответов: 18
    Последнее: 18.06.2006, 16:50

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •