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-интерфейсы.

Использование в проекте

Документация по использованию Conan-пакетов для разработки приложений для ОС Аврора.

На сервере Conan библиотеки заранее собраны и размещены под различные версии ОС Аврора 4 и ОC Аврора 5. Для данных версий представлены архитектуры armv7hl, aarch64 и x84_64.

Библиотеку можно использовать в проекте с помощью данного conanfile.py

from conan import ConanFile

class Application(ConanFile):
    settings = "os", "compiler", "arch", "build_type"
    generators = "PkgConfigDeps"

    requires = (
        "farmhash/cci.20190513@aurora",
    )    

Процесс локальной сборки описан в документации.

farmhash

A family of hash functions
Лицензия
MIT
Версия
Домашняя страница
Скачать
x86_64
12.35 Kb
MD5: 8dc7484e33bd2523f55c9399166441a5
Updated: 04.09.2025, 11:04:08
armv8
13.23 Kb
MD5: ad1ed78d24fbeec71da81bad21034fd0
Updated: 04.09.2025, 11:03:57
armv7
17.89 Kb
MD5: 6f2253ee3cb3c3bfe01da81bdbeb7a3a
Updated: 04.09.2025, 11:04:07
Использование в проекте

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.