鉴于SSE 4.2(Intel Core i7和i5部分)包含CRC32指令,研究是否可以构建更快的通用散列函数似乎是合理的.根据这个,只有16位CRC32均匀分布.那么还有什么其他转变才能克服这个问题呢?
更新
怎么样?只有16位适合散列值.精细.如果你的桌子是65535或更低,那么很棒.如果不是,则通过Nehalem POPCNT(填充计数)指令运行CRC值以获得设置的位数.然后,将其用作表数组的索引.如果您的表位于1mm条目以南,则此方法有效.我敢打赌,性能最好的哈希函数更便宜/更快.现在GCC 4.5有一个CRC32内在它应该很容易测试...如果我有丰富的业余时间来处理它.
大卫