Библиотека C++ для микробенчмарков, измеряющих время выполнения небольших фрагментов кода, по структуре похожих на модульные тесты.
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-битными хешами на разных платформах.
Приложение с открытым исходным кодом на Java для нагрузочного тестирования и оценки производительности веб-приложений и других сервисов.
Фреймворк для модульного и компонентного тестирования на базе Vite, использующий его конфигурацию, трансформеры и плагины.
Фреймворк для тестирования Python: помогает писать небольшие тесты и подходит для сложного функционального тестирования приложений и библиотек.
Процедурный макрос для Rust, который использует ChatGPT API, чтобы генерировать тела функций и тесты во время компиляции.