Интересно, есть ли какие-нибудь более быстрые сборки 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, поэтому он может не сработать для вас.