Per motivi di prestazioni, ho bisogno di dividere un gruppo di oggetti identificati da una stringa in gruppi. Oggetti possono essere sia identificati da un numero o una stringa in forma prefissata (qualificato) con puntini separare parti dell'identificatore:Migliore funzione di hash per identificatori misti numerici e letterali
12
323
12343
2345233
123123131
ns1:my.label.one
ns1:my.label.two
ns1:my.label.three
ns1:system.text.one
ns2:edit.box.grey
ns2:edit.box.black
ns2:edit.box.mixed
identificatori numerici sono da 1 a diversi milioni. Gli identificatori di testo hanno più probabilità di averne molti a partire dallo stesso prefisso dello spazio dei nomi (ns1 :) e con lo stesso prefisso del percorso (edit.box.).
Qual è la migliore funzione di hash per questo scopo? Sarebbe bello poter prevedere in qualche modo la dimensione del bucket in base alle statistiche degli identificatori di oggetti. Ci sono alcuni buoni articoli per costruire una buona funzione di hash basata su alcune informazioni statistiche?
Esistono diversi milioni di identificatori di questo tipo, ma lo scopo è dividerli in gruppi di 1-2.000 in base alla funzione di hash.
Avete considerato l'utilizzo di una o più delle seguenti funzioni hash generali: http://www.partow.net/programming/hashfunctions/index.html sono estremamente veloci ed efficienti. –