Beim Hashen von Strings ist ein ELF-Hash viel schneller als CRC. Er erzeugt bei kurzen Strings auch nicht mehr Kollisionen (bei meinen Versuchen)
Delphi-Quellcode:
Function HashFromStr(Const Value: String): Cardinal; // ELF-Hash
Var
i: Integer;
x: Cardinal;
Begin
Result := 0;
For i := 1 To Length(Value) Do Begin
Result := (Result Shl 4) + Ord(Value[i]);
x := Result And $F0000000;
If (x <> 0) Then
Result := Result Xor (x Shr 24);
Result := Result And (Not x);
End;
End;