Einzelnen Beitrag anzeigen

Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.357 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Spring IList - Capacity sinnvoll

  Alt 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.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli (13. Jun 2025 um 13:31 Uhr)
  Mit Zitat antworten Zitat