Назад | Перейти на главную страницу

Более быстрые альтернативы zlib

Интересно, есть ли какие-нибудь более быстрые сборки zlib с более продвинутой оптимизацией?

Если возможно оптимизировать его с помощью инструкций SSE или компилятора Intel C ++, или какого-нибудь трюка, который был запатентован ранее (я знаю, что патенты были серьезным ограничением при разработке gzip / zlib), кто-нибудь потрудился реализовать это?

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

Через несколько лет после того, как этот вопрос был впервые задан, появились несколько более быстрых zlib x86_64, использующих тип оптимизации, предложенный BarsMonster:

Авторы samtools (набора инструментов для взаимодействия с данными высокопроизводительного секвенирования) создали сравнение скоростей zlib.

zlib-ng собирает оптимизацию zlib не в основной zlib но он может быть не таким стабильным, как mainline zlib. Его средство отслеживания проблем также поучительно в качестве ссылки на другие известные ускорения zlib.

Недавно запрос на вытягивание, который утверждает, что "ускоряет inflate_fast до 1,5 раз на x86_64" (путем заполнения и копирования 8 байтов за раз) был создан, но не принят в основной zlib. Патч, обеспечивающий эту работу, также имеет ухабистую поездку в Chromium (см. Ошибка хрома и Обзор Chromium), но, надеюсь, отправитель сделает перерыв, чтобы отойти и подзарядиться, потому что со стороны кажется, что в сложной ситуации прогресс продвигался очень медленно ...

Другой альтернативой является miniz библиотека (общественное достояние, unlicense.org), которая реализует большую часть zlib API в одном исходном файле C и читает / записывает zlib-совместимые потоки сжатых данных. На уровне сжатия 1 он использует компрессор в реальном времени, который работает очень быстро (немного медленнее, чем minilzo, но с более высоким сжатием).

Это не пересборка, но две хорошие альтернативы zlib - quicklz и fastlz. Оба они очень быстрые по сравнению с gzip -1, но не достигают такой хорошей степени сжатия. Для моего приложения размер увеличивался на 10-15%, но скорость сжатия была 6x, так что очень хороший компромисс.

Конечно, ни один из них не совместим с zlib, поэтому он может не сработать для вас.