MurmurHash.net
1.0.0
C#-Implementierung von Murmur Hash 2
Verwendung:
MurmurHash2.Hash("mystring");
MurmurHash2.Hash(byteArray);
Ich habe einen kleinen Benchmark geschrieben, um die Anzahl der Kollisionen bei 466.000 Wörtern zu testen (Liste aller englischen Wörter von hier: https://github.com/dwyl/english-words), und die Anzahl der Kollisionen beträgt 22, was ich als a betrachte ziemlich gutes Ergebnis.
Standard string.GetHashCode()
ergibt 48 Kollisionen in der 466-k-Wortliste.
Verstrichene Zeit (auf der 466.000 Wörter umfassenden Liste):
Hash | Verstrichene Zeit | Anzahl der Kollisionen |
---|---|---|
MurmurHash2 | 104 ms | 22 |
GetHashCode | 47 ms | 48 |
Für die Zahlen von 1
bis 999999
(denken Sie an Postleitzahlen) waren die Ergebnisse:
Hash | Verstrichene Zeit | Anzahl der Kollisionen |
---|---|---|
MurmurHash2 | 234 ms | 56 |
GetHashCode | 121 ms | 0 |
GetHashCode
ist hier bei Kollisionen besser, aber MurMur glänzt bei längeren Texten.