Repolode
rurban

rurban/smhasher

Набор тестов для оценки скорости и статистического качества хеш-функций с большой таблицей проверенных реализаций.

Звёзды
2,183
Форки
192
Открытые issues
45
Последний коммит
13 часов назад

Что это?

SMHasher — набор тестов для хеш-функций. Он запускает бенчмарки скорости на больших и маленьких ключах, измеряет стоимость поиска в хеш-таблице и проверяет статистическое качество: подсчитывает коллизии, оценивает смещение и лавинный эффект, а также выполняет проверки корректности, выявляя слабые места выходных данных функции.

В репозитории также опубликована большая сравнительная таблица с сотнями некриптографических и криптографических хеш-функций, включая MurmurHash, xxHash, wyhash, CityHash, FarmHash, SipHash и многие другие. Для каждой реализации указаны пропускная способность, число циклов на вычисление хеша для небольшого ключа, производительность хеш-таблицы, размер объекта и тесты качества, которые она не проходит. Результаты приведены для нескольких CPU — от настольных x86 до 32-разрядного ARM-телефона.

Вместе с данными приведены выводы автора. Он отмечает, что быстрые хеш-функции с небольшими недостатками качества часто хорошо показывают себя в реальных хеш-таблицах, тогда как для задач с повышенными требованиями к безопасности нужны криптографические или ключевые хеш-функции.

Ключевые возможности

  • 01Измеряет пропускную способность при обработке больших ключей и стоимость хеширования небольших ключей в тактах.
  • 02Оценивает производительность поиска в хеш-таблице и размер объекта для анализа инлайнинга.
  • 03Проводит статистические тесты качества: проверяет коллизии, смещение, лавинный эффект и корректность.
  • 04Публикует сортируемые сравнительные таблицы для нескольких платформ с разными CPU.

Сценарии использования

  • Выбор хеш-функции для реализации хеш-таблицы или таблицы символов.
  • Сравнение скорости и качества возможных хеш-функций перед выбором одной из них.
  • Проверка новой реализации хеш-функции с помощью известных наборов тестов.
  • Изучение компромиссов между скоростью хеширования, поведением при коллизиях и производительностью хеш-таблицы.

Что важно знать

  • Лицензия чётко не указана (в метаданных указано NOASSERTION), поэтому условия повторного использования неясны.

В подборках

Темы

Частые вопросы

Что такое smhasher?
Набор тестов для оценки скорости и статистического качества хеш-функций с большой таблицей проверенных реализаций. SMHasher — набор тестов для хеш-функций. Он запускает бенчмарки скорости на больших и маленьких ключах, измеряет стоимость поиска в хеш-таблице и проверяет статистическое качество: подсчитывает коллизии, оценивает смещение и лавинный эффект, а также выполняет проверки корректности, выявляя слабые места выходных данных функции.
smhasher можно использовать бесплатно? Какая у него лицензия?
smhasher распространяется с открытым исходным кодом под лицензией Other. Перед использованием в коммерческих продуктах проверьте условия лицензии.
smhasher всё ещё поддерживается?
Активно поддерживается. Последний коммит в smhasher — 7 нояб. 2026 г..
Для чего можно использовать smhasher?
Выбор хеш-функции для реализации хеш-таблицы или таблицы символов. Сравнение скорости и качества возможных хеш-функций перед выбором одной из них. Проверка новой реализации хеш-функции с помощью известных наборов тестов. Изучение компромиссов между скоростью хеширования, поведением при коллизиях и производительностью хеш-таблицы.
Где скачать smhasher?
Исходный код и инструкции по установке — на GitHub: https://github.com/rurban/smhasher

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Библиотека на C для сверхбыстрого некриптографического хеширования с одинаковыми 32-, 64- и 128-битными хешами на разных платформах.

Инструменты разработчика#hash-function#checksum#non-cryptographic
11,4 тыс.+9 за неделю946COtherАктивно поддерживаетсяОбновлён 10 дней назад

Приложение с открытым исходным кодом на Java для нагрузочного тестирования и оценки производительности веб-приложений и других сервисов.

9,6 тыс.+16 за неделю2,3 тыс.JavaApache-2.0Активно поддерживаетсяОбновлён 3 дня назад

Фреймворк для тестирования Python: помогает писать небольшие тесты и подходит для сложного функционального тестирования приложений и библиотек.

14,7 тыс.+13 за неделю3,6 тыс.PythonMITАктивно поддерживаетсяОбновлён 17 часов назад