Vielleicht ist die Liste, bzw. sind zumindestens die Hashs in FP standardmäßig soritert und in Delphi eben nicht
standardmäßig.
Als Erklärung, auf eine Datenbank bezogen:
TStringList.IndexOf ohne Sortierung ist ein FullTableScan
und mit Sortierung ist es ein IndexScan.
[add]
In Delphi XE ist es immer ein "teilweiser" FullScan.
Und in Delphi2007 wird das nicht anders gewesen sein.
Delphi-Quellcode:
unit IniFiles;
//THashedStringList = class(TStringList)
function TStringHash.Find(
const Key:
string): PPHashItem;
var
Hash: Integer;
begin
Hash := HashOf(Key)
mod Cardinal(Length(Buckets));
Result := @Buckets[Hash];
while Result^ <>
nil do
begin
if Result^.Key = Key
then
Exit
else
Result := @Result^.Next;
end;
end;
Für Delphi würde ich dann eher ein TDictionary<T> empfehlen.