Новости Rust против C: библиотека zlib-rs демонстрирует 13% прирост производительности

NewsMaker

I'm just a script
Премиум
19,423
40
8 Ноя 2022
Улучшенная обработка SIMD и мультиверсионность вывели Rust-реализацию zlib в лидеры.


98rij4pcy8i5dx3greutcc539zqm51vi.jpg


Проект zlib-rs Для просмотра ссылки Войди или Зарегистрируйся версию 0.4.2, обеспечивающую значительный прирост производительности. По последним тестам, это самая быстрая API-совместимая реализация zlib для декомпрессии, а в ряде ключевых сценариев сжатия она также обходит конкурентов.

<h4>Оптимизация декомпрессии</h4> Одним из главных направлений улучшений стало более эффективное использование SIMD-инструкций. В предыдущих тестах zlib-rs получал преимущество благодаря флагу <code>target-cpu=native</code>, но это было не совсем честное сравнение, так как C-библиотека zlib-ng проверяла доступность SIMD во время выполнения. В новой версии этот момент устранён, и zlib-rs теперь сам выбирает оптимальный метод в рантайме.

<h3>Ключевые улучшения</h3>
  • Мультиверсионность (Multiversioning): теперь библиотека поддерживает разные версии функций для разных процессоров, выбирая наилучшую с минимальными затратами.
  • DFA-оптимизации: использование <code>-Cllvm-args=-enable-dfa-jump-thread</code> позволило ускорить обработку небольших блоков данных.
  • Тестирование и мониторинг: создана панель мониторинга, которая отслеживает производительность текущей версии и сравнивает её с конкурентами.
<h3>Результаты тестирования</h3> <h4>Сравнение с zlib-ng</h4> В тестах на декомпрессию zlib-rs показывает устойчивый прирост скорости более чем на 10% для входных данных размером 1 КБ и более 6% для 65 КБ. Единственное исключение — совсем небольшие блоки (16 байт), но это не имеет значения в реальных сценариях.

<h4>Сравнение с zlib-chromium</h4> zlib-chromium быстрее на небольших блоках, но на реалистичных размерах (1 КБ и выше) zlib-rs уверенно побеждает, обеспечивая прирост скорости до 6.5%.

<h4>Оптимизация сжатия</h4> В области сжатия результаты смешанные. На уровне 6 (по умолчанию) zlib-rs выигрывает 6%, а на уровне 9 (максимальное сжатие) — более 13%. Однако на низких уровнях производительности пока уступает zlib-ng.

<h3>Что дальше?</h3>
  • Улучшение поддержки API gzip, чтобы стать полноценной заменой zlib.
  • Доработка системы упаковки и дальнейшая оптимизация.
  • Поиск финансирования в размере €95.000 для завершения работы.
zlib-rs уже доступен как для Rust, так и для C-проектов (через динамическую библиотеку). В Rust рекомендуется использовать flate2 1.1.0 с флагом <code>zlib-rs</code>.
 
Источник новости
www.securitylab.ru

Похожие темы