Теперь предположим, что вы хотите хеш и хотите что-то молниеносно , которое будет работать в вашем случае, потому что ваши строки длиной всего 6 символов, вы можете использовать эту магию:
size_t precision = 2; //change the precision with this
size_t hash(const char* str)
{
return (*(size_t*)str)>> precision;
}
CRC для медленных ударов;)
Пояснение:
Это работает путем приведения содержимого указателя строки в «похожее» значение size_t (int32 или int64 на основе оптимального соответствия для вашего оборудования). Таким образом, содержимое строки интерпретируется как необработанное число, больше не нужно беспокоиться о символах, и вы затем сдвигаете бит на нужную точность (вы настраиваете это число для достижения наилучшей производительности, я нашел 2 работы для хеширования строк в набор из нескольких тысяч).
Также очень полезная часть - любой приличный компилятор на современном оборудовании хешит строку, подобную этой, в 1 инструкции по сборке, трудно превзойти;)