gpt4 book ai didi

c - 为什么位移运算符使我的哈希函数如此快?

转载 作者:行者123 更新时间:2023-11-30 20:59:25 25 4
gpt4 key购买 nike

我现在正在学习 C,我最初为我在 CS50 edx 类(class)中构建的拼写检查程序构建了这个哈希函数。

int hashing(char *word)      
{

unsigned int hash = 0;
for (int i = 0, n = strlen(word); i < n; i++)
hash += word[i];
return hash % HTABLE_SIZE;
}

然后我偶然发现了这个hash function在使用位移位运算符的 reddit 上。

int hashing(char *word)
{
unsigned int hash = 0;
for (int i = 0, n = strlen(word); i < n; i++)
hash = (hash << 2) ^ word[i];
return hash % HTABLE_SIZE;
}

使用这个哈希函数,我的程序速度从 0.13 秒缩短到 0.06 秒。有人可以向我解释一下为什么这个哈希函数这么快吗?

最佳答案

我不认为 shift + xor 比加法更快。

但是,生成的哈希可能要快得多,因为哈希值分布得更好。

关于c - 为什么位移运算符使我的哈希函数如此快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47546904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com