Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

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

AW: Das Programm wird zu groß

  Alt 30. Aug 2019, 20:56
duzende verschiedenen TList<...> obwohl sie ja die meist gebrauchten Methoden seit XE7 inlined haben. Aber da für die ganzen Collections nunmal RTTI an ist,
In Spring4D wird ja auch die System.Generics.Collections eingebunden, also wäre das Problem mit TList<> dort auch akut, oder gibt es eine Alternative dazu die sich mit Spring4D verträgt ?
Spring4D nutzt nur an einigen wenigen Stellen System.Generics.Collections und zwar dort, wo man aufgrund des ich nenns mal "Henne-Ei"-Problems nicht die Spring.Collections nutzen kann, z.B. in der Spring.pas. Zudem sind schon seit langem die ganzen Collections eigene Implementierungen (früher waren es alles nur Wrapper um die System.Generics.Collections Klassen) - mit 2.0 wurde die letzte dieser (das Dictionary) abgelöst.

Zudem hab ich für 2.0 massiv daran gearbeitet, eben diesen Code Bloat zu bekämpfen - RTTI abgeschaltet, wo es geht, interne Architekturen umgestellt und einige Tricks, um identische Generics nicht zu duplizieren. Dieser wirkt sich nämlich nachweisbar nicht nur auf die Größe der Binary aus, sondern auch auf die Compilezeit und den Speicherverbrauch des Compilers - mal ein paar Zahlen auszugsweise: im Vergleich 1.2.2 zu 2.0 (Stand alpha.2) haben sich die Compilezeiten unter Win32 bis zu viermal verbessert - ein Referenzprojekt was ich dazu nutzte ging von über 60 Sekunden für einige 100K LoC wo eine Menge von Generics genutzt wurden auf unter 15 Sekunden und die Binarygröße hat sich in ähnlicher Größenordnung verringert (natürlich je nach Code und Anwendung unterschiedlich).

Mehr zu der ganzen Thematik werd ich dieses Jahr auf der EKON erzählen.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (30. Aug 2019 um 20:59 Uhr)
  Mit Zitat antworten Zitat