Pode-se construir uma função hash “boa” usando o CRC32C como base?

Dado que o SSE 4.2 (partes do Intel Core i7 e i5) inclui uma instrução CRC32, parece razoável investigar se é possível criar uma função hash de propósito geral mais rápida. De acordo comesta somente 16 bits de um CRC32 são distribuídos igualmente. Então, que outra transformação se aplicaria para superar isso?

Atualizar Que tal agora? Apenas 16 bits são adequados para um valor de hash. Bem. Se sua mesa for 65535 ou menos, então ótima. Caso contrário, execute o valor CRC através da instrução POPCNT (contagem da população) do Nehalem para obter o número de bits definido. Em seguida, use isso como um índice em uma matriz de tabelas. Isso funciona se sua tabela estiver ao sul de entradas de 1 mm. Aposto que é mais barato / rápido que o hash de melhor desempenho funciona. Agora issoGCC 4.5 tem um CRC32 intrínseco, deve ser fácil testar ... se eu tivesse o tempo livre abundante para trabalhar nele.

David

questionAnswers(5)

yourAnswerToTheQuestion