Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#23

AW: Liegen lokale Klassen auf dem Stack?

  Alt 8. Dez 2017, 08:53
Es geht in dem Blog zwar um C++ und Spieleentwicklung, aber die technischen Informationen lassen sich auch in Delphi übertragen:
http://ithare.com/c-for-games-perfor...data-locality/

BTW, jeder unnötige string (vor allem die impliziten, die man so gar nicht mitbekommt) ist auch eine Heapallokierung.
Von daher macht es schon Sinn, diesbezüglich ein bisschen Bescheid zu wissen und sensibel zu sein.

Anekdote: Ich habe jüngst einen Rot-Schwarz-Baum implementiert. Die ursprüngliche Implementierung nutzte für die Knoten Objekte.
Einfach zu implementieren und man konnte schön Vererbung nutzen (TRedBlackTreeNode<T> <- TRedBlackTreeNode <- TBinaryTreeNode).
Das sorgte allerdings für elendigen Speicheroverhead durch den ganzen Klump, der bei Objekten so mit kommt.
Also lieber Records/Pointer - erste Implementierung mit New/Dispose. Weniger Speicher - gut.
Aber über Zeit Memoryfragmentierung (übrigens genauso wie bei Objekten) und somit zunehmende Cache misses.
Also den Speicher für die Records aus einem Array nehmen, so dass eine bessere Lokalität gegeben ist.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat