Da ja bekannt ist wie viele Elemente eingefügt werden sollen, könnte es etwas bringen vorher Items.Capacity zu setzen (bei nicht virtueller Listbox).
Das
TListBox.Items eine
TListBoxStrings-Instanz ist, die
SetCapacity nicht überschreibt, wird dort lediglich die leere Implementierung von
TStrings ausgeführt. Bringt also rein gar nichts.
Diese
TListBoxStrings-Klasse hat nur wenig mit einer
TStringList gemein, was die üblichen Optimierungstechniken in der Regel scheitern lässt. Lediglich
BeginUpdate/EndUpdate führt den entsprechenden
WM_SETREDRAW Aufruf durch. Deswegen ist
Assign auch langsamer als eine Folge von
Add-Aufrufen, da bei
Assign nach jedem
Add auch noch ein
PutObject folgt, was wiederum eine
LB_SETITEMDATA Message sendet.