aPLib

Тема в разделе "WASM.RESEARCH", создана пользователем tan, 27 окт 2006.

  1. tan

    tan New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2006
    Сообщения:
    4
    не мог бы кто прокомментировать кусок из исходника метода сжатия aPLib

    if (offs >= 32000) len++;
    if (offs >= 1280) len++;
    if (offs < 128) len += 2;
     
  2. Bohdan200

    Bohdan200 New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2005
    Сообщения:
    134
    Адрес:
    Lviv
    А че тут сбсно коментировать?...
    len наращивается на 2 если offs >= 32000 или ести offs < 128
    len наращивается на 1 если 32000 > offs >= 1280
    Простая оптимизация теста на вхождение значения в диапазон...
     
  3. Dr.Golova

    Dr.Golova New Member

    Публикаций:
    0
    Регистрация:
    7 сен 2002
    Сообщения:
    348
    Сначала разберись, как работает LZ алгоритм, вопросы отпадут сами собой - это оптимизация копирования lz фразы: При большых смещениях внутри окна нет смысла кодировать короткие фразы, вот и наращивают длину. Вопросы есть?
     
  4. tan

    tan New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2006
    Сообщения:
    4
    а чего тогда длину наращивать при offs < 128 ?!

    Я боюсь, что чего-то действительно не понимаю... :-(
    Теория по LZ была прочитана. Но по одному исходнику все равно не могу разобрать до конца алгоритм aPLib. Может еще чего посоветуете почитать.
    Спасибо за ответ.
     
  5. Nothing

    Nothing New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2003
    Сообщения:
    139
    Адрес:
    Russia
    Прошу прощения, а разве где-то пробегал исходник сжатия aplib? Сам автор его вроде не отдает. Или имеется ввиду реверсированный вариант?
     
  6. tan

    tan New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2006
    Сообщения:
    4
    вота http://www.ibsensoftware.com/download.html
     
  7. diamond

    diamond New Member

    Публикаций:
    0
    Регистрация:
    21 май 2004
    Сообщения:
    507
    Адрес:
    Russia
    Распаковщик там в исходниках, а вот упаковка не является OpenSource. IMHO только по распаковщику понять алгоритм упаковки можно не всегда.
     
  8. Dr.Golova

    Dr.Golova New Member

    Публикаций:
    0
    Регистрация:
    7 сен 2002
    Сообщения:
    348
    > а чего тогда длину наращивать при offs < 128 ?!

    Опять же оптимизация - по статистике, lz фраз в ближайших 128 байтах должно быть много и достоточно длинных (больше 2х байт), поэтому можно сэкономить на кодировании длины.

    > IMHO только по распаковщику понять алгоритм упаковки можно не всегда.

    В данном случае, это чистый LZ, и соответственно алгоритм упаковки такой же как у всех других LZ
    отличаются они только способом кодирования смещения/длины фразы, методом выбора отимальной (по длине кода) фразы, и небольшой оптимизацией для бинарников (кодирование нулей). Понять все эти тонкости из распаковщика совсем не сложно, было бы желание.
     
  9. tan

    tan New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2006
    Сообщения:
    4
    использовние флага LWM тоже связано с оптимизацией ?
     
  10. Dr.Golova

    Dr.Golova New Member

    Публикаций:
    0
    Регистрация:
    7 сен 2002
    Сообщения:
    348
    > использовние флага LWM тоже связано с оптимизацией ?

    Естественно! Все современные чистые LZ алгоритмы отличаются только способом кодирования литералов/фраз и некоторых методов оптимизаций кодирования потока.
    aplib позиционируется для сжатия бинарных данных, отсюда и такая оптимизация. Был бы под текст сделал - все было бы чуть по другому.