Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Programm Größe (https://www.delphipraxis.net/145309-programm-groesse.html)

JnZn558 29. Dez 2009 12:41


Programm Größe
 
ich hab ein ganz standard vcl programm mit delphi 2010 kompiliert, es ist warnsinn, dass ein vcl programm ohne controls schon knapp weniger als 800 kb gross ist. irgendwie debug version und release version haben die gleiche größe.

Micha88 29. Dez 2009 12:46

Re: Programm Größe
 
Zitat:

Zitat von Daniel
Zitat:

Zitat von MichaelLinden
ALso ich muss auch sagen, dass die kompilierte EXE unter D2010 runt 1MB größer wird!

Das ist zu wesentlichen Teilen auf das neue RTTI-System zurück zu führen. Hier kannst Du aber mittels Compiler-Direktiven selbst Hand anlegen:

Delphi-Quellcode:
{ MINIMAL RTTI GENERATION HENCEFORTH IN THIS FILE }
{$RTTI EXPLICIT METHODS([]) FIELDS([]) PROPERTIES([])}
Weitere Infos: Bei Google suchendelphi 2010 rtti exe size


himitsu 29. Dez 2009 13:04

Re: Programm Größe
 
Es wäre ja mal schön, wenn es irgendwo eine komplette Liste aller Compilerdirektiven gäbe, aber nichtmal die OH kennt Vieles.

Denn so kann man sowas hier ja nichtmal selber rausfinden.

helgew 29. Dez 2009 13:09

Re: Programm Größe
 
@Orthographie: Da hat wohl General Zweck zugeschlagen :P

Wenn dich die Programmgröße stört, so kannst du entweder nicht verwendete units rauswerfen oder dich OS-spezifisch an NonVCL-Umsetzungen heranwagen. Dazu musst du aber leider in der Klassenhierarchie ganz unten anfangen, was nicht immer zweckmäßig ist.

Kommentar eins drunter: Graphics wird ja schon verwendet. Außerdem sollte sich diese unit nicht wirklich bemerkbar machen.
|
v

Micha88 29. Dez 2009 13:17

Re: Programm Größe
 
Zitat:

so kannst du entweder nicht verwendete units rauswerfen
Da ist mir wohl aufgefallen..:
- Wenn ich z.B. "Graphics" rauswerfe, ändert sich die Größe garnicht :roll:

himitsu 29. Dez 2009 13:20

Re: Programm Größe
 
Schau mal in die .PAS ... wenn es dort keine Initialization/Finalization-Abschnitte am Ende gibt, dann ändert es nichts, wenn man diese Unit wegläßt.
Ebenso, wenn diese Unit noch von einer anderen Unit aufgerufen wird.

Probiere mal eine leere Konsolenanwendung mit und ohne SysUtils ... da steckt 'ne Menge drinnen.

Ralf Kaiser 29. Dez 2009 14:19

Re: Programm Größe
 
Zitat:

Zitat von JnZn558
debug version und release version haben die gleiche größe.

Das ist auch kein Wunder, da die Debuginformationen bei Delphi immer schon in den DCU-Dateien gespeichert wurden und nicht in der EXE (es sei denn man baut das TD32-Debuginfo mit ein, das landet dann in der Echse EXE)

JnZn558 30. Dez 2009 11:08

Re: Programm Größe
 
oh man, borland vermasselt es wieder mal, ein kleines Programm, das schon mehrere MEGABYTES gross ist, da wollen wir erst gar nicht sehen, wenn man ein etwas komplexere Programm, einige hundert MB oder vl schon GB gross. das is echt krank.

Luckie 30. Dez 2009 11:17

Re: Programm Größe
 
Zitat:

Zitat von JnZn558
dass ein vcl programm ohne controls schon knapp weniger als 800 kb gross ist.

Wo kommen jetzt deine mehreren Megabyte her?

Aber C/C++ ist auch nicht besser. Nur kann man dort die C-Runtimes dynamisch linken, weil sie auf jedem Windows System schon vorhanden sind. Delphi muss seine Runtimes eben mit in die Exe kompilieren. Davon mal abgesehen finde ich 800kb nicht sehr heftig. Schlimmer finde ich da, was da Lazarus produziert. Da hat eine leere Exe 1,6MB.

Und bevor man meckert, sollte man sich vorher mal informieren, wie das ganze überhaupt funktioniert und worin das begründet ist.

geskill 30. Dez 2009 11:19

Re: Programm Größe
 
Die Festplatten werden größer, die Internetgeschwindigkeiten schneller, warum darf die Dateigröße da nicht minimal zunehmen? Wenn man damit wirklich ein Problem hat kann man die Dateien ja komprimieren, ich z.b. nutze dafür Free UPX.

Grüße

Luckie 30. Dez 2009 11:25

Re: Programm Größe
 
Na ja, verstehen kann ich das schon. Warum sollte man mit den Ressourcen nicht schonend umgehen? Stell dir vor jedes Programm wäre 20MB groß, dann reichen auch die großen Festplatten nicht mehr. Und es gibt schon Gründe eine kleine Exe zu haben. Stell dir einen Selfextracor vor: 10 Textdateien mit insgesamt 25kb gepackt und das SFX Modul hat dann 20 MB. ;)

Auch kann Bandbreite und auch Speicherplatz eine Rolle spielen, bei Freehostern zum Beispiel. Ich hätte zum Beispiel keine Lust selbst bei DSL3000 riesen Exe-Dateien hoch- und runterladen zu müssen.

Und zu UPX sage ich mal gar nichts. ;) Such einfach mal nach UPX hier im Forum.

Mithrandir 30. Dez 2009 11:26

Re: Programm Größe
 
Zitat:

Zitat von JnZn558
oh man, borland vermasselt es wieder mal, ein kleines Programm, das schon mehrere MEGABYTES gross ist, da wollen wir erst gar nicht sehen, wenn man ein etwas komplexere Programm, einige hundert MB oder vl schon GB gross. das is echt krank.

:lol: :lol:

Wenn man nicht gerade ein halbstündiges MPEG2-Video in die Exe linkt, wird man wohl kaum eine Gigabytes große Exe produzieren können. Und was macht schon der Unterschied zwischen 400k und 800k? So what...

Anders schauts aus, wenn man wirklich mit der Win32-API arbeitet, und die komplette VCL/RTL nicht nutzt. Da landet man bei 20kB*, und das ist ein ziemlich guter Wert.

P.S.: Borland "vermasselt" da schon lange nix mehr... ;)



*zumindest bei TDE, wie das bei D2010, ohne Compilerschalter aussieht, weiß ich allerdings nicht...

generic 30. Dez 2009 14:27

Re: Programm Größe
 
Zitat:

Zitat von JnZn558
oh man, borland vermasselt es wieder mal, ein kleines Programm, das schon mehrere MEGABYTES gross ist, da wollen wir erst gar nicht sehen, wenn man ein etwas komplexere Programm, einige hundert MB oder vl schon GB gross. das is echt krank.

Wenn dir das nicht passt, dann nimmt C oder C++.
Aber leider wirst du dann die C-Runtime mit ausliefern müssen.
Diese sind größer als die in Delphi einkompiliert werden.

Also hast du die Wahl zwischen:
einen etwas größeren Delphi-Programm
oder
eine sehr kleines C++-Programm mit einer großen Runtime welche du ausliefern musst.

Wenn du übrigens auf die VCL verzichtest, dann wird deine Delphi Anwendung auch klein.
Meine Delphi Setup Bootstrapper bewegen sich im 100kByte Bereich.

himitsu 30. Dez 2009 14:46

Re: Programm Größe
 
oder gleich C# und dazu dann das kleine .Net-Runtime-Dingens


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:34 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