Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by himitsu,
14. Jul 2017
siehe #7 zusammen mit #4
IndexOf in StringList sortiert > bei 1000 Einträgen bis zu 10 String-Vergleiche
IndexOf in StringList unsortiert > bei 1000 Einträgen alle 1000 String-Vergleiche, wenn nicht enthalten (durchschnittlich 500 wenn vorhanden)
"diese" THashedStringList ist gut beim Suchen, aber extrem schlecht beim Hinzufügen/Ändern.
Du änderst aber sehr oft und suchst verhältnismäßg...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by himitsu,
14. Jul 2017
Add macht intern auch ein IndexOf (außer bei dupAccept und wenn nicht sortiert, wo er nicht zu prüfen/suchen braucht)
Das Tempo des IndexOf steckt also auch im Add drin.
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by himitsu,
14. Jul 2017
Jupp, wenn StringList sortiert ist, dann nutzt IndexOf eine "optimierte" Suchfunktion,
wenn nicht, dann wird im Worst-Case jedes mal die komplette Liste durchgegangen (jeder einzelne String verglichen).
Mit eine Hashed-StringList muß nur nach dem Hash (Integer) gesucht werden, anstatt alle Strings als Byteweise zu vergleichen.
Das Dictinary ist erstmal sortiert und nutzt auch noch Hashs....