Per semplificare, la mia domanda è: come hash una stringa (circa 200 caratteri) il più rapidamente possibile. La sicurezza non è importante, ma le collisioni SONO un grosso problema.Algoritmo Hash più veloce in Java per le stringhe
Nota: dopo un'indagine rapida, sembra che MurmurHash3 potrebbe essere la scelta migliore. Sono aperto a qualsiasi commento dicendo altrimenti th '
Innanzitutto, so che ci sono molte altre domande simili, ma non sono riuscito a trovare una risposta convincente.
Ho un elenco di oggetti, ciascuno contenente un elenco di circa 3k paragrafi che viene salvato in un database. Ogni X ore, quei paragrafi sono rigenerati e ho bisogno di trovare se qualche paragrafo è cambiato, e in tal caso, spingere solo quei nuovi paragrafi.
Il modo più veloce che ho trovato per trovare le differenze (sapendo che la maggior parte del tempo, il contenuto sarà identico) è quello di creare un MerkleTree, salvarlo al DB, e iterare il MerkleTree trovare le differenze, invece di confrontando i paragrafi stessi.
Ciò implica, nel mio caso, che creerò dieci migliaia di hash al secondo da confrontare con ciò che è nel DB. Pertanto, ho bisogno di un modo molto efficiente per creare quegli hash. Non mi interessa la sicurezza, ho solo bisogno di garantire che il numero di collisioni rimanga molto molto basso.
Quale sarebbe il miglior algoritmo disponibile in Java per quello?
Nel mio caso, l'oggetto principale è composto da sezioni, che si compone di Lingue, che si compone di paragrafo. La strategia di confronto è:
1) Se l'hash oggetto è identico, fermata, altrimenti vai a 2)
2) Loop su tutti Sezione, mantenere solo la sezione con un diverso hash
3) Effettua il loop su tutte le lingue di quelle sezioni, mantieni solo la lingua con un diverso hash
4) Effettua il ciclo su tutti i paragrafi di tutte quelle lingue, se l'hash è diverso, quindi invia il nuovo contenuto.
See: [Quale algoritmo di hash che è meglio per l'unicità e la velocità?] (Http://programmers.stackexchange.com/q/49550/88986) – durron597
trovo la domanda un po ' non è chiaro, hai solo bisogno di decidere se un paragrafo * specifico * degli oggetti è cambiato o è l'idea di * trovare * a quale oggetto appartiene un paragrafo (cioè qual è la chiave primaria?). – Durandal
Dai un'occhiata anche a http://stackoverflow.com/questions/2624192/good-hash-function-for-strings – slartidan