![]() |
Spring IList - Capacity sinnvoll
Ich habe da eine IList:
Delphi-Quellcode:
Macht es Sinn nach dem Create ein "Result.Capacity := numPoints" einzufügen? Vielleicht wegen Performance?
Result := TPointList.Create() as IPointList;
for i := 0 to numPoints - 1 do Result.Add(points[i]); |
AW: Spring IList - Capacity sinnvoll
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz