Non riesco a usare boost: hash perché devo stare con C e non posso usare C++.Una funzione hash minima per C?
Ma, ho bisogno di hash un numero elevato (da 10K a 100k) di stringhe di token (da 5 a 40 byte di lunghezza) in modo che la ricerca all'interno di quelle sia la più veloce.
MD5, SHA1 o qualsiasi funzione di hash lunga sembra troppo pesante per un'operazione semplice, non sto facendo crittografia. Inoltre, vi è il costo di archiviazione e di elaborazione.
Quindi la mia domanda:
Quale potrebbe essere il più semplice algoritmo di hash che garantirà la prevenzione collisioni nei casi più pratici.
Quanti bit utilizzare per il valore hash? Sto sviluppando per sistemi a 32 bit. L'algoritmo hash in Perl/Python usa anche gli hash a 32 bit? O devo saltare a 64?
Riguardo all'implementazione delle tabelle hash nei linguaggi di scripting comuni: il controllo dell'implementazione per le collisioni o posso evitare del tutto quella parte?
la seguente pagina ha diverse implementazioni di funzioni hash uso generale implementati in C (e molte altre lingue): http://partow.net/ programmazione/hashfunctions/index.html –
Hai considerato l'utilizzo di GLIB? https://developer.gnome.org/glib/2.46/glib-Hash-Tables.html –