ЛЗФСЕ
Разработчик(и) | Яблоко |
---|---|
Первоначальный выпуск | 2015 |
Стабильная версия | lzfse-1.0 / 8 мая 2017 г |
Репозиторий | lzfse на GitHub |
Написано в | С |
Операционная система | macOS , iOS , Linux [1] |
Доступно в | С |
Тип | Сжатие данных |
Лицензия | из 3 пунктов Новая лицензия BSD |
LZFSE ( Энтропия конечного состояния Лемпеля-Зива ) — это с открытым исходным кодом, сжатия данных без потерь алгоритм созданный Apple Inc. Он был выпущен с более простым алгоритмом под названием LZVN . [2]
Обзор [ править ]
Название является аббревиатурой от слов Лемпеля-Зива и энтропии конечного состояния. [3] (реализация асимметричных систем счисления ).LZFSE был представлен Apple на Всемирной конференции разработчиков того года 2015 года. Он поставлялся с выпусками iOS 9 и OS X 10.11 .
Apple утверждает, что LZFSE сжимает со скоростью, сравнимой с коэффициентом zlib ( DEFLATE ), а распаковывает в два-три раза быстрее, используя меньше ресурсов, поэтому обеспечивает более высокую энергоэффективность, чем zlib. Он был нацелен на сценарии, в которых скорость и скорость декомпрессии должны иметь одинаковый приоритет. [3] Частично эта энергоэффективность была достигнута за счет оптимизации алгоритма для современных микроархитектур с особым упором на Arm64 . [4] Сторонний бенчмаркинг подтверждает, что LZFSE распаковывает быстрее, чем zlib, но также предполагает, что многие другие современные алгоритмы сжатия могут иметь более благоприятные характеристики производительности алгоритма сжатия, такие как плотность, скорость сжатия и скорость распаковки, со значительным отрывом. [5]
По данным Squash Benchmark, LZFSE по скорости аналогичен zstd (уровень 6), но имеет немного худшее соотношение. LZVN по скорости аналогичен LZ4 уровня 4, но с немного худшим передаточным числом. [6] Ни LZFSE, ни LZVN не подлежат настройке во время выполнения, хотя некоторые константы можно изменить во время компиляции для достижения обычного компромисса между скоростью и соотношением сторон. [7]
Реализация [ править ]
Справочная C, библиотека написанная Эриком Бейнвиллем, была доступна по лицензии BSD из 3 пунктов после WWDC 2016. Она также включает исполняемый файл для сжатия и распаковки потоков LZFSE. Планов по предоставлению LZVN API нет. [1]
Реализация LZFSE от Apple использует более простой алгоритм, называемый LZVN, когда входные данные меньше LZFSE_ENCODE_LZVN_THRESHOLD
(4096 байт). Это алгоритм типа LZSS без энтропийного кодирования, но с тремя ширинами пакетов REP (L,M,D). Apple объясняет, что в эталонной реализации с открытым исходным кодом LZFSE не так хорошо работает для небольших размеров, поэтому вместо него используется LZVN. [7] Этот алгоритм в libfastCompression.a был обнаружен ранее как метод сжатия kernelcache по умолчанию в Mac OS X Yosemite Developer Preview 1 (2014), заменив устаревший алгоритм. lzss
сжатие от Харухико Окумура . [8]
Использование [ править ]
AppleFSCompression.framework (AFSC), механизм квазипрозрачного сжатия в HFS Plus и Apple File System , поддерживает LZFSE и LZVN, начиная с OS X 10.9.
Apple Платформа образов дисков предлагает кодировку на основе LZFSE, называемую ULFO
начиная с Mac OS X 10.11 , [9] доступен через hdiutil(1)
[10] и некоторые сторонние утилиты для работы с изображениями.
Apple представила формат Apple Archive и связанный с ним API в macOS High Sierra в 2017 году. [11] Имя расширения — .aar (поскольку в macOS Big Sur раньше было .yaa ). Шифрование было введено в macOS Monterey , когда AA стало форматом утилиты архивирования по умолчанию . В macOS доступны три утилиты командной строки для обработки файлов AA. [12] [13] Что касается сторонних программ, Keka может использовать системные API для обработки файлов AA, но в других системах независимых реализаций не существует. [14]
См. также [ править ]
- Zstandard — еще одна комбинация LZ77 и FSE, автор Янн Колле, автор FSE.
- Алгоритм сжатия LZ4 — быстрый представитель семейства LZ77, также доступен на платформах Apple. [15]
Ссылки [ править ]
- ^ Перейти обратно: а б Бейнвилл, Эрик (07.06.2016). «Библиотека сжатия LZFSE и инструмент командной строки» . Гитхаб . Проверено 4 июля 2016 г.
- ^ Apple Inc. «Сжатие данных — Сжатие | Документация разработчика Apple» . разработчик.apple.com . Проверено 7 апреля 2017 г.
- ^ Перейти обратно: а б Де Симоне, Серджио. «Apple открывает исходный код своего нового алгоритма сжатия LZFSE» . информация . Проверено 7 июля 2016 г.
- ^ Apple Inc. (12 июня 2015 г.). «Низкое энергопотребление, высокая производительность: сжатие и ускорение – WWDC 2015 – Видео для разработчиков Apple» . разработчик.apple.com . Проверено 05 марта 2017 г. PDF
- ^ «Бенчмарк сжатия» . Проверено 10 августа 2018 г.
- ^ «Бенчмарк сжатия сквоша» . Гитхаб . Давить . Проверено 25 декабря 2019 г.
- ^ Перейти обратно: а б "lzfse_tunables.h" . Гитхаб . 18 декабря 2019 года . Проверено 22 декабря 2019 г.
- ^ Пайкер-Альфа (4 июня 2014 г.). «Ядро OS X 10.10 Yosemite DP1 (кэш)» . Универсум Пайка . Проверено 22 декабря 2019 г.
- ^ Цай, Майкл (07 октября 2015 г.). «Образы дисков LZFSE в Эль-Капитане» . Архивировано из оригинала 9 апреля 2017 г. Проверено 15 апреля 2022 г.
- ^ «Справочная страница hdiutil(1) mojave» . Проверено 15 апреля 2022 г.
- ^ «Яблочный архив» . Документация разработчика Apple .
- ^ «Внутри Apple Archive: больше, чем просто формат сжатия» . Компания «Электик Свет» . 10 мая 2022 г.
- ^ «AA(1): Манипулирование архивами Apple» . Кейт.github.io .
- ^ «Поддержка AppleArchive · Проблема № 829 · aonez/Keka» . Гитхаб .
- ^ «алгоритм_сжатия» . Документация разработчика Apple . Apple Inc. Проверено 11 августа 2019 г.
Внешние ссылки [ править ]
- lzfse на GitHub
- Finite State Entropy от Янна Колле (Cyan4973) , источника реализации FSE в LZFSE
- Обсуждение на Encode.su , из которого мейнтейнер Эрик Бейнвилл взял предложения