Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.357 Beiträge
Delphi 11 Alexandria
|
AW: Spring IList - Capacity sinnvoll
13. Jun 2025, 13:26
Ich habe einfach mal (Interesse halber) den Copilot gefragt...
Copilot
Ja, es macht absolut Sinn, direkt nach dem Create-Aufruf Result.Capacity := numPoints zu setzen – aus Performance-Gründen.
Warum das sinnvoll ist:
Die TList<T>-basierte Klassen (wie vermutlich auch deine TPointList) verwalten intern ein dynamisches Array. Wenn du viele Elemente hinzufügst, ohne vorher die Capacity zu setzen, passiert Folgendes:
Bei jedem Überschreiten der aktuellen Kapazität wird das interne Array vergrößert.
Das bedeutet: Speicher neu allokieren + vorhandene Elemente kopieren.
Das kostet Zeit und Ressourcen, besonders bei vielen Elementen.
Vorteil von Capacity := numPoints:
Du gibst dem internen Array genau den benötigten Speicherplatz.
Dadurch wird kein mehrfaches Reallozieren nötig.
Das spart CPU-Zeit und Speicheroperationen.
---
Ist schon alles erstaunlich.
Spürbar wird das allerdings nur sein, wenn die Funktion ständig ausgeführt wird.
Geändert von stahli (13. Jun 2025 um 13:31 Uhr)
|