farmhash
Семейство хеш-функций, разработанных Google для высокопроизводительного и качественного хеширования данных. Библиотека предоставляет эффективные реализации для различных архитектур и сценариев использования, фокусируясь на скорости и качестве распределения хешей.
Особенности
- высокая производительность на современных процессорах;
- поддержка как 32-, так и 64-битных хешей;
- адаптация под различные размеры входных данных;
- портируемость и совместимость с C++11 и новее;
- качественные хеши с низкой вероятностью коллизий.
Основные компоненты
FarmHash состоит из набора хеш-функций, оптимизированных для разных типов данных и размеров (подробнее с документацией можно ознакомиться здесь).
Хеширование строк и бинарных данных
Библиотека предоставляет несколько функций для хеширования строк и произвольных бинарных данных, обеспечивая баланс между скоростью и качеством хеширования. Эти функции подходят для использования в хеш-таблицах, проверках целостности и идентификации данных.
Основные функции хеширования:
farmhash::Hash32()иfarmhash::Hash64()— основные функции для вычисления 32- и 64-битных хешей;farmhash::Hash128()— возвращает 128-битный хеш в виде пары 64-битных значений;farmhash::Fingerprint32()иfarmhash::Fingerprint64()— стабильные «отпечатки» для идентификации данных.
Хеширование для различных типов данных
FarmHash включает специализированные функции для работы с определёнными типами данных, что позволяет достичь максимальной производительности для каждого конкретного случая. Алгоритмы автоматически адаптируются под размер входных данных.
Функции для различных типов:
farmhash::Hash()— универсальная функция, автоматически выбирающая оптимальный алгоритм в зависимости от размера данных;- поддержка хеширования целых чисел, указателей и структур с помощью
farmhash::Hash()для встроенных типов.
Вспомогательные утилиты
Библиотека также содержит вспомогательные функции для работы с хешами:
farmhash::HashLen16()— быстрый хеш для данных длиной до 16 байт;farmhash::HashLen0to16()— оптимизация для очень коротких данных;farmhash::HashLen17to32()иfarmhash::HashLen33to64()— специализированные функции для средних размеров.
Гарантии качества
FarmHash разработан с акцентом на качество хеширования:
- все функции проходят строгие тесты на случайность и равномерность распределения;
- алгоритмы устойчивы к атакам на коллизии;
- поддержка санитайзеров (ASan, MSan, UBSan) для обеспечения безопасности.
Интеграция и использование
Библиотека легко интегрируется в существующие проекты благодаря простому API:
- заголовочные файлы можно подключить напрямую без сборки;
- не зависит от сторонних библиотек;
- предоставляет как C++, так и C-интерфейсы.