Um es einfach zu machen, ist meine Frage: wie man einen String (etwa 200 Zeichen) so schnell wie möglich hasht. Sicherheit ist nicht wichtig, aber Kollisionen sind eine große Sache.Schnellster Hash-Algorithmus in Java für Strings
Hinweis: Nach einer kurzen Untersuchung scheint es so, als wäre MurmurHash3 die beste Wahl. Ich bin offen für jeden Kommentar zu sagen, sonst '
Erstens weiß ich, dass es viele andere ähnliche Frage, aber ich konnte keine überzeugende Antwort noch finden.
Ich habe eine Liste von Objekten, die jeweils eine Liste von etwa 3k Absätzen enthält, die in einer Datenbank gespeichert ist. Alle X Stunden werden diese Absätze neu generiert, und ich muss herausfinden, ob sich Absätze geändert haben, und wenn dies der Fall ist, nur diese neuen Absätze drücken.
Der schnellste Weg, um die Unterschiede zu finden (zu wissen, dass die meiste Zeit der Inhalt identisch sein wird), ist ein MerkleTree zu erstellen, speichern Sie es in der DB, und durchlaufen Sie den MerkleTree, um die Unterschiede statt zu finden Vergleichen Sie die Absätze selbst.
Dies impliziert in meinem Fall, dass ich zehntausend Hashes pro Sekunde erstellen werde, um mit dem zu vergleichen, was in der DB ist. Daher brauche ich eine sehr effiziente Möglichkeit, diese Hashes zu erstellen. Mir ist die Sicherheit egal, ich muss nur sicherstellen, dass die Anzahl der Kollisionen sehr, sehr niedrig bleibt.
Was wäre der beste verfügbare Algorithmus in Java?
In meinem Fall besteht das Hauptobjekt aus Abschnitten, die aus Sprachen besteht, die aus Absatz besteht. Der Vergleich Strategie ist:
1) Wenn das Objekt Hash identisch ist, stoppen, gehen sonst zu 2)
2) Schleife auf alle Abschnitt, halten nur der Abschnitt mit einem anderen Hash
3) Schleife in allen Sprachen dieser Sektionen, behalte nur die Sprache mit einem anderen Hash
4) Loop auf allen Absatz aller dieser Sprachen, wenn der Hash ist anders, dann schieben Sie den neuen Inhalt.
Siehe auch: [Welche Hashing-Algorithmus ist am besten für Einzigartigkeit und Geschwindigkeit?] (Http://programmers.stackexchange.com/q/49550/88986) – durron597
finde ich die Frage eher Unklar, müssen Sie nur entscheiden, ob sich ein * spezifischer * Objektabsatz geändert hat oder ist die Idee * zu finden *, zu welchem Objekt ein Absatz gehört (dh was ist der Primärschlüssel?). – Durandal
Siehe auch http://stackoverflow.com/questions/2624192/good-hash-function-for-strings – slartidan