Re: посоветуйте хеш-функцию от указателя
От: watch-maker  
Дата: 01.02.13 13:53
Оценка:
Здравствуйте, pepsicoca, Вы писали:

P>Пока что сделал что-то вроде этого:


Есть проблемы с pointer aliasing.

Плюс хэш-функции вида "суммируем байт" дают обычно очень плохие распределения.

P>Посоветуйте, какую хэш-функцию лучше взять, чтобы было быстро и переносимо.

Кастуй указатель к uintptr_t, и возвращай это значение.
Если тебе известно, что от хэш-функции чаще используются младшие биты, то можно сдвинуть (циклически или даже просто так) результат вправо на число бит, равное логарифму типичного выравнивания при выделении памяти (скорее всего будет равно чему-то вроде 2-х или 3-х бит).
Ну или можно дальше вокруг значения типа uintptr_t сделать этап обычного целочисленного хэширования. Хотя для указателей это скорее лишнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.