Предлагается опровергнуть (или еще раз подтвердить) обозначенное утверждение на любой НЕ экстремально-экзотической 64-битной платформе, обязательно включая VLIW-Эльбрус, x86_64, aarch64, MIPS64.
https://github.com/PositiveTechnologies/t1ha
Внутри есть бенчмарк «по тактам» = git clone ... && make bench. Этот тест разумно-гибкий, умеет разные размеры и т.д, см --help.
Для reference там есть (бывшие) чемпионы xxHash и HighwayHash.
---
На самом деле, этот бенчмарк - отдельная тема, так как примерно нет инструмента, позволяющего замерить стоимость неких действий с точностью до такта, тем более на разных архитектурах.
Поэтому приветствуются пул-реквесты с уточнениями/исправлениями для всяческих ARM-ов и MIPS-ов. К концу года я выделю его ([code for] measuring a cost in terms of CPU clock cycles) в отдельную библиотеку.
---
ДИСКЛАЙМЕР (а как это по-русски?):
- Не стоит сравнивать не-переносимые хеши (например аппаратный sha или кульбиты на AVX2) с portable code. Давайте попробуем найти лучшее, оставляя за скобками привязку к уникальным инструкциям/возможностям CPU.
- Плохо сравнивать хеш-суррогаты (совсем простые хеш-функции) и хеши проходящие (хотя-бы) статистические тесты, т.е. с t1ha предлагается сравнивать функции проходящие эти тесты (хотя-бы частично).
- Нет смысла сравнивать не-криптографические и криптографические функции - последние примерно вне обсуждаемого scope.
- Для не-asm кода многое зависит от компилятора. Соответственно, давайте смотреть на результаты от актуальных версий (gcc > 5.5, clang > 6). Технически, (IMHO) разумнее, засчитывать для хеша лучший результат из всех компиляторов/флагов (-march может «порадовать» как в + так и в -).
- На многие вопросы есть ответы тут, не забудьте по ответы в комментариях.
---
С меня пиво или «пиво» за хорошую статью по теме на medium или lwn (но принципиально НЕ за деньги).
rgs.