Сжатие LZ теперь в восемь раз быстрее

Выпущена последняя версия алгоритма сжатия LZ с поддержкой многопоточности, что позволяет значительно увеличить скорость сжатия - до восьми раз.

Сжатие LZ - это алгоритм, основанный на сжатии словаря LZ. Он используется для сжатия многих популярных форматов файлов, применяется в GIF, Deflate, Zip, PNG. Он был достаточно важен, чтобы быть названным IEEE Milestone.

LZ-сжатие - один из классов методов словарного сжатия, изобретенных в 1978 году Абрахамом Лемпелем и Джейкобом Зивом. Словарные методы сжатия работают без потерь и заключаются в создании словаря коротких последовательностей, которые затем можно использовать для кодирования файла, удаляя дубликаты последовательностей и заменяя их обращением к словарю. Алгоритм LZW также является частью утилиты сжатия файлов UNIX.

Новая версия LZ4, 1.10, была значительно улучшена благодаря добавлению поддержки многопоточности для использования многоядерных процессоров. Это ускоряет процесс сжатия и улучшает использование LZ4 для высокопроизводительных задач.

Хотя LZ4 исторически славится своей высокой скоростью сжатия, потребность в еще более высокой пропускной способности возросла, особенно с появлением технологий хранения данных nvme (nonvolatile memory express), обеспечивающих пропускную способность в несколько Гб/с.

Разработчики представили следующую эталонную таблицу повышения производительности при сжатии:

Они отмечают, что многопоточность менее важна для декомпрессии, поскольку современные диски nvme все еще могут быть насыщены одним потоком декомпрессии. Однако новая версия все равно повышает производительность за счет перекрытия операций ввода-вывода с процессами распаковки.

При тестировании на платформе x64 Linux распаковка текстового файла размером 5 ГБ локально занимает 5 секунд в версии 1.9.4; в версии 1.10.0 это время сократилось до 3 секунд, что соответствует > +60 % прироста производительности.

Наряду с поддержкой многопоточности, в новом выпуске добавлена полная поддержка сжатия и распаковки словарей. В предыдущем выпуске она была экспериментальной. По словам разработчиков, полная поддержка означает, что разработчики могут использовать сжатие словаря в приложениях, которые в этом нуждаются, например, для небольших данных, где инициализация словаря может стать узким местом. Состояние словаря может использоваться несколькими потоками одновременно.

В этом выпуске также добавлена новая средняя степень сжатия Level 2, которая заполняет существенный разрыв между стандартным "Fast Level 1" и более интенсивным "High Compression Level 3". Разработчики утверждают, что это сбалансированный вариант, оптимизирующий производительность и сжатие, поэтому он идеально подходит для приложений, требующих лучшего сжатия, чем уровень 1, без компромиссов в скорости, связанных с высоким уровнем сжатия 3.

LZ4 1.10 уже доступен на GitHub.

Сжатие LZ теперь в восемь раз быстрее
Понравилась новость? Тогда не забудь оставить свой комментарий.
А так же, добавь наш сайт в закладки (нажми Ctrl+D), не теряй нас.
13 августа 2024 г.
135

Комментарии

Оставить комментарий:
* отправляя форму, я даю согласие на обработку персональных данных

Читайте еще

Продолжаем добавлять языки программирования для Вас.
Впереди много интересного!

Только свежие новости программирования и технологий каждый день.

Свежие посты