Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

LZFSE ( Lempel – Ziv Finite State Entropy ) - это алгоритм сжатия данных без потерь с открытым исходным кодом, созданный Apple Inc. Он был выпущен с более простым алгоритмом под названием LZVN . [2]

Обзор [ править ]

Название является аббревиатурой от Lempel-Ziv и Finite State Entropy [3] (реализация асимметричных систем счисления ). LZFSE был представлен Apple на Всемирной конференции разработчиков в 2015 году. Он поставлялся с версиями iOS 9 и OS X 10.11 того года .

Apple утверждает, что LZFSE сжимает с коэффициентом, сравнимым с коэффициентом zlib ( DEFLATE ), и распаковывает в два-три раза быстрее, используя меньше ресурсов, поэтому предлагает более высокую эффективность, чем zlib. Он был предназначен для сценариев, в которых скорость и скорость декомпрессии должны иметь одинаковый приоритет. [3] Частично эта эффективность была достигнута за счет оптимизации алгоритма для современных микроархитектур с уделением особого внимания arm64 . [4]Сторонние тесты подтверждают, что LZFSE распаковывает быстрее, чем zlib, но также предполагает, что многие другие современные алгоритмы сжатия могут иметь более благоприятные характеристики производительности алгоритмов сжатия, такие как плотность, скорость сжатия и скорость распаковки, со значительным запасом. [5]

Реализация Apple LZFSE использует более простой алгоритм, называемый LZVN, когда входной файл меньше LZFSE_ENCODE_LZVN_THRESHOLD(4096 байт). Это алгоритм типа LZSS без энтропийного кодирования, но с тремя ширинами пакетов REP (L, M, D). В эталонной реализации с открытым исходным кодом Apple объясняет, что LZFSE не работает так же хорошо для небольших размеров, поэтому вместо этого используется LZVN. [6] Этот алгоритм в libfastCompression.a был обнаружен ранее как метод сжатия кэша ядра по умолчанию в Mac OS X Yosemite Developer Preview 1 (2014), заменив устаревшее lzssсжатие от Харухико Окумуры . [7]

Согласно Squash Benchmark, LZFSE по скорости схож с ZSTD (уровень 6), но имеет немного худшее соотношение. LZVN аналогичен по скорости LZ4 уровня 4, но с немного худшим соотношением. [8] Ни LZFSE, ни LZVN нельзя настраивать во время выполнения, хотя некоторые константы можно настроить во время компиляции для обычного компромисса между скоростью и скоростью. [6]

Реализация [ править ]

Справочная библиотека C, написанная Эриком Бейнвиллом, стала доступной в соответствии с лицензией BSD с тремя пунктами после WWDC 2016. Она также включает исполняемый файл для сжатия и распаковки потоков LZFSE. Нет планов предоставлять LZVN API. [1]

AppleFSCompression.framework (AFSC), механизм квазипрозрачного сжатия в HFS Plus и Apple File System , поддерживает LZFSE и LZVN, начиная с OS X 10.9.

См. Также [ править ]

  • Zstandard - еще одна комбинация LZ77 и FSE, автор Ян Колле, автор FSE
  • Алгоритм сжатия LZ4 - быстрый член семейства LZ77, также доступный на платформах Apple [9]

Ссылки [ править ]

  1. ^ a b Бейнвилл, Эрик (07.06.2016). «Библиотека сжатия LZFSE и инструмент командной строки» . GitHub . Проверено 4 июля 2016 .
  2. ^ Apple Inc. «Сжатие данных - Сжатие | Документация разработчика Apple» . developer.apple.com . Проверено 7 апреля 2017 .
  3. ^ а б Де Симоне, Серджио. «Apple открывает исходный код своего нового алгоритма сжатия LZFSE» . infoq . Проверено 7 июля 2016 .
  4. ^ Apple Inc. (12 июня 2015 г.). «Низкое энергопотребление, высокая производительность: сжатие и ускорение - WWDC 2015 - видеоролики разработчиков Apple» . developer.apple.com . Проверено 5 марта 2017 . pdf
  5. ^ «Тест сжатия» . Проверено 10 августа 2018 .
  6. ^ a b "lzfse_tunables.h" . GitHub . 18 декабря 2019 . Проверено 22 декабря 2019 .
  7. ^ Пикер-Alpha (4 июня 2014). «Ядро OS X 10.10 Yosemite DP1 (кеш)» . Pike's Universum . Проверено 22 декабря 2019 .
  8. ^ «Тест сжатия сжатого воздуха» . GitHub . Сквош . Проверено 25 декабря 2019 .
  9. ^ "алгоритм_сжатия" . Документация для разработчиков Apple . Apple , Inc . Проверено 11 августа 2019 .

Внешние ссылки [ править ]

  • lzfse на GitHub
  • Конечная энтропия состояния, автор Ян Колле (Cyan4973) , источник реализации FSE в LZFSE
  • Обсуждение на Encode.su , из которого разработчик Эрик Бейнвиль принял предложения