Entwickler-Ecke

Programmierwerkzeuge - D2009 Programmgröße


Carla - Mo 26.01.09 09:32
Titel: D2009 Programmgröße
Hat wer schon D2009 ausprobiert?
Das Ding erzeugt ja eine Riesenexe.
Nur Neucompilieren von D2007 auf D2009 verdoppelt die Programmgröße reichlich.

Eine Form mit einem Grid und IBDAC als Dateizugriff ergibt eine ca.5 Mbyte exe.
RTL und VCL als Laufzeitpackage verringert die Exe-Größe um etwa 1,5Mbyte.
Das Nachladen von dll dauert in unserem Projekt aufgrund der doppelten Programmgröße signifikant länger.
Wenn dann auch noch die neue Function Generics, na ja etwas wenig stabil ist, dann
ist es wohl eine Überlegung wert, bei D2007 oder D7 zu bleiben.
Hat wer ähnliche Erfahrungen gemacht?
Oder gibt es Möglichkeiten den Speicherhunger wieder einzudämmen?
(Die Exe packen ist wohl nicht die beste Idee?)

Mit Gruß
Carla


jaenicke - Mo 26.01.09 10:01
Titel: Re: D2009 Programmgröße
user profile iconCarla hat folgendes geschrieben Zum zitierten Posting springen:
Das Nachladen von dll dauert in unserem Projekt aufgrund der doppelten Programmgröße signifikant länger.
Das wird sicher nicht an der Programmgröße liegen, aber ich habe gemerkt, dass alles was mit Strings zu tun hat teilweise deutlich langsamer geworden ist. Ich habe da dann ein wenig optimiert, damit war das erledigt, außerdem musste ich fast die selben Teile ohnehin wegen Unicode überarbeiten.
An der Unicodeunterstützung werden u.a. vermutlich auch die Geschwindigkeitseinbußen liegen, die bei dir auftreten. Etwas anderes ist mir in der Richtung bisher nicht aufgefallen.

user profile iconCarla hat folgendes geschrieben Zum zitierten Posting springen:
Oder gibt es Möglichkeiten den Speicherhunger wieder einzudämmen?
Die Frage ist eigentlich wozu? Bei den heutigen Festplatten spielen die paar MiB, die Programmcode ausmachen, doch überhaupt keine Rolle.

user profile iconCarla hat folgendes geschrieben Zum zitierten Posting springen:
(Die Exe packen ist wohl nicht die beste Idee?)
Dadurch wird das Programm nur unnötig langsamer. Außerdem kann es passieren, dass das Programm mal von einem Virenscanner als Virus erkannt wird, und das ist ja etwas, was unter keinen Umständen passieren sollte. Schließlich ist das dem Vertrauen in ein Produkt nicht eben zuträglich.


Carla - Mo 26.01.09 10:44
Titel: Re: D2009 Programmgröße
user profile iconjaenicke hat folgendes geschrieben:
Die Frage ist eigentlich wozu? Bei den heutigen Festplatten spielen die paar MiB, die Programmcode ausmachen, doch überhaupt keine Rolle.

Wenn das Programm über das Internet verteilt und gewartet wird, dann schon.
Ist halt ein Unterschied ob ich 20 oder fast 50 MByte übertragen muss.

Gruß
Carla

Moderiert von user profile iconmatze: Quote Tag repariert


jaenicke - Mo 26.01.09 10:56

Ok, bei dem Unterschied macht das schon etwas aus. Allerdings kann man da sicherlich durch inkrementierende Patches ggf. die Übertragungsmenge extrem verringern, da große Teile der Exe identisch sein werden (die der Komponenten ja z.B.).

user profile iconCarla hat folgendes geschrieben Zum zitierten Posting springen:
Wenn dann auch noch die neue Function Generics, na ja etwas wenig stabil ist, dann
ist es wohl eine Überlegung wert, bei D2007 oder D7 zu bleiben.
Mir gefällt zwar Delphi 2009 eigentlich sehr gut, aber beim Portieren ist mir schon einiges unangenehme passiert.

Deshalb ist sicherlich die Frage, welche Vorteile für das Projekt überhaupt für einen Umstieg sprechen. Schließlich lohnen sich viele neue Features ja eher für neue denn für bestehende Projekte, die man dafür stark umbauen müsste.


Delete - Mo 26.01.09 10:56
Titel: Re: D2009 Programmgröße
user profile iconCarla hat folgendes geschrieben Zum zitierten Posting springen:
Eine Form mit einem Grid und IBDAC als Dateizugriff ergibt eine ca.5 Mbyte exe.

Wie groß war sie denn mit D2007?


Carla - Mo 26.01.09 11:26
Titel: Re: D2009 Programmgröße
user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconCarla hat folgendes geschrieben Zum zitierten Posting springen:
Eine Form mit einem Grid und IBDAC als Dateizugriff ergibt eine ca.5 Mbyte exe.

Wie groß war sie denn mit D2007?


Unter D7 (mit ein paar mehr Componenten auf der Form) 2.05 Mbyte.
Eine dll mit Forms unter D7 1,77 Mbyte und D2009 etwa 4 Mbyte.

Nachtrag bei Compilierung mit rtl;vcl als Laufzeit BPL

D2007 0,57 Mbyte weniger.
D2009 1,52 Mbyte weniger.

Gruß
Carla


Delete - Mo 26.01.09 11:56

Also mehr als eine Verdoppelung finde ich schon recht heftig, wenn aus einer 2 MB Exe eine 5 MB Exe wird.


user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Die Frage ist eigentlich wozu? Bei den heutigen Festplatten spielen die paar MiB, die Programmcode ausmachen, doch überhaupt keine Rolle.

Also bei diesen Ausmaßen finde ich schon, dass das eine Rolle spielt. Ich habe eben mal meinen Programmeordner auf meinem Entwicklungsrechner durchsucht. da habe ich 535 Exe dateien gefunden (Ich habe das nach zehn Minuten mal abgebrochen.) wäre jede Exe datei im Schnitt 5 MB Groß, dann hätte ich schon 2,6 GB nur an Exe Dateien auf der Festplatte. Jetzt rechne noch mal das Windows Verzeichnis und was weiß ich wie viele DLLs dazu. Dannhast du noch andere große Dateien (Videos, Filme, MP3, Digitalbilder usw.), dann wird es wahrscheinlich auf einer 500 GB Platte auch eng werden.


Carla - Mo 26.01.09 12:41

Ist zwar Äpfel mit Birnen verglichen aber etwa die gleiche Funktionalität unter C# und Net hat ca 420 kbyte.

Carla


elundril - Mo 26.01.09 12:44

.net und delphi kann man imho nicht so direkt vergleichen da viel vom Framework übernommen wird und deswegen in die exe selbst nicht reinkompiliert werden muss.

lg elundril


WInfo - Mo 26.01.09 21:42

Moin Moin Carla,

jetzt komm mal wieder auf den Boden. (a) für .NET musst du natürlich noch die grösse des frameworks addieren, und damit sprengst du jede native grösse.

(b) ist die grösse einer compilierten D2009 exe nur unbedeutent grösser als die von D2006. da solltest du mal deine compileroptionen überprüfen und schaun was du da alles hineinlinkst. vermute mal, dass du nicht auf RELEASE umschaltest und du somit die ganzen debugger informationen in deiner echse hast.

im übrigen, das letzte projekt das ich auf D2009 umstellte war alles andere als aufwendig. die echse in D2006 hatte ca. 15 MB die aus D2009 ungefähr 15,3 MB und das lässt sich auf die neue stringgrösse zurückführen.


jaenicke - Mo 26.01.09 22:01

user profile iconWInfo hat folgendes geschrieben Zum zitierten Posting springen:
im übrigen, das letzte projekt das ich auf D2009 umstellte war alles andere als aufwendig. die echse in D2006 hatte ca. 15 MB die aus D2009 ungefähr 15,3 MB und das lässt sich auf die neue stringgrösse zurückführen.
Wodurch wird die Größe denn ausgemacht? Durch Ressourcen oder durch Quelltexte des Projekts und Komponenten und deren Quelltexte?

Wenn ich ein neues Projekt unter Delphi 2006 kompiliere, dann ist die Exe 384 KiB groß, unter Delphi 2009 die selbe Exe 496 KiB. Wenn ich jetzt jede Komponente unter Standard und Additional einmal aufs Formular lege, dann bin ich unter Delphi 2006 bei 1134 KiB und bei Delphi 2009 bei 1508 KiB.

Man merkt also schon einen deutlichen Unterschied. Allerdings gibt es auch viele neue Funktionen, insofern ist klar, dass es größer wird. Man muss eben abwägen was wichtiger ist.