mekakic
2008-08-12, 09:05:30
Hi,
ich habe eben für ein C Programm, was ich nutze und dessen Quelltext ich habe, den Zugriff von einem linearen Array auf eine Hash-Tabelle umgestellt. Die Laufzeit ist damit über 4x besser geworden. Als Hash-Key hatte ich mir überlegt ich verwende einen String, dessen ASCII Werte ich aufsummiere und dort Modulo durch eine Primzahl teile. Gibt es einen flotten aber besseren Weg um einen String zu einem Index zu hashen?
Bei meiner Hashtable sind 60% aller Slots belegt bei im Schnitt 3, aber auch mehrfach mal ~20 Kollisionen. Wie könnte ich für Strings eine bessere Verteilung erreichen?
ich habe eben für ein C Programm, was ich nutze und dessen Quelltext ich habe, den Zugriff von einem linearen Array auf eine Hash-Tabelle umgestellt. Die Laufzeit ist damit über 4x besser geworden. Als Hash-Key hatte ich mir überlegt ich verwende einen String, dessen ASCII Werte ich aufsummiere und dort Modulo durch eine Primzahl teile. Gibt es einen flotten aber besseren Weg um einen String zu einem Index zu hashen?
Bei meiner Hashtable sind 60% aller Slots belegt bei im Schnitt 3, aber auch mehrfach mal ~20 Kollisionen. Wie könnte ich für Strings eine bessere Verteilung erreichen?