Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 好的哈希函数用于缓存?_C_Algorithm_Caching_Hash_Hashcode - Fatal编程技术网

C 好的哈希函数用于缓存?

C 好的哈希函数用于缓存?,c,algorithm,caching,hash,hashcode,C,Algorithm,Caching,Hash,Hashcode,我想实现一个进入高速缓存的哈希函数。最初,我有20位输入,我需要将这个输入散列成7位 我的缓存是128x4 我尝试过不同的散列函数,但结果不是很好(我得到60%的命中率)。我曾想过使用MD5算法,但也许有更好的方法。我在网上看到了MD5的一个实现,但我没有得到它。在这里,一个完全分布式的散列实际上是不可取的。它提供了将附近地址映射到同一集合的可能性 也许您要做的是将17位的哈希值降到4位,并直接映射三个低阶位,以保证同一集合的实例之间的最小距离。这还不清楚,您所说的“进入高速缓存的哈希函数”是什

我想实现一个进入高速缓存的哈希函数。最初,我有20位输入,我需要将这个输入散列成7位

我的缓存是128x4


我尝试过不同的散列函数,但结果不是很好(我得到60%的命中率)。我曾想过使用MD5算法,但也许有更好的方法。我在网上看到了MD5的一个实现,但我没有得到它。

在这里,一个完全分布式的散列实际上是不可取的。它提供了将附近地址映射到同一集合的可能性


也许您要做的是将17位的哈希值降到4位,并直接映射三个低阶位,以保证同一集合的实例之间的最小距离。

这还不清楚,您所说的“进入高速缓存的哈希函数”是什么意思?散列函数的输出是缓存的索引。请查看@Mdlg answer in,以便“可以使用CRC32C作为基础构造“良好”的散列函数”。我在使用CRC进行散列方面取得了一定的成功。MD5不是一个好主意,您需要一个可以快速计算的散列函数,计算MD5非常复杂,并且要在加密上下文中使用。您可以发布更多参数吗?我认为x4是四向集合关联的,但是缓存线有多大?您将在硬件中实现这一点吗?您正在使用什么样的测试模式?此缓存是用于特殊应用程序还是通用CPU缓存?