Wurde FastStrings 2009 oder schon 2006 teilweise in Delphi übernommen?
(finde nicht mehr wann es war, aber 2007 hatte der originale Entwickler die Entwicklung eingestellt)
Mit 3% (div 33) der Daten dauert es nicht so lang.
Das mit dem "Selbsbau"-Hash findet manchmal mehr, wegen Hash-Kollisionen, zu kleinem Hash und da nicht nochmal der String verglichen wird.
Und das mit den Generics geht erst nach D2007, bzw. im FPC vermutlich etwas anders.
Code:
// 685.158 in 2.313.748
TArray.BinarySearch 342579 0,97
TArray.BinarySearch.Hash 342708 0,39
TStringList nach über 3 Stunden abgebrochen und mit weniger versucht
TStringList.Sorted 342579 3,05
THashedStringList 342579 448,36
THashedStringList.Sorted 342579 334,23
TList<> ...
Code:
// mit DIV 30 = 22.838 in 77.124
TArray.BinarySearch 11419 0,01
TArray.BinarySearch.Hash 11419 0,01
TStringList 11419 153,13 (3min)
TStringList.Sorted 11419 0,05
THashedStringList 11419 0,11
THashedStringList.Sorted 11419 0,11
TList<> 11419 9,30
TList<>.Sorted** 11419 9,31
TDictionary<> 11419 0,00
Fazit:
Für normale Mengen an INI-Einträgen ist die Delphi-THashedStringList absolut schwachsinnig.
Sortiert ist eine normale StringListe wesenlich schneller und selbst unsortiert ist sie in normalem Umfang immernoch schnell genug.