У меня есть список (64-битных) адресов, представляющих фрейм стека, и я хочу хэшировать их до одного 64-битного числа, чтобы помочь идентифицировать те, которые были замечены ранее. Максимальное количество адресов - 128.
Мой текущий алгоритм вычисляет хэш путем итерации по списку, преобразования каждого адреса в хэш и поворота хеша на 11 бит за цикл.
Есть лучшие предложения?
Я думаю, он пытается проверить программные пути. Он пытается сохранить путь из 64-битных адресов. Мне кажется, что ответ CRC64 хорош.
Он хочет хешировать весь список - я этого не понял, спасибо за пояснение ...





Здесь есть пара хороших целочисленных хеш-функций как для 32-, так и для 64-разрядной версии: http://www.concentric.net/~Ttwang/tech/inthash.htm
Также здесь написано: http://burtleburtle.net/bob/hash/evahash.html
Первая ссылка теперь мертва. Этот gist.github.com/badboy/6267743 кажется сохраненной его копией.
Если производительность не является проблемой, вы можете попробовать криптографический хеш - усеките до того, сколько байтов вы хотите.
Зачем вообще их хешировать, а не просто приводить к intptr_t (при условии C)?