Linux-Compilat 3x grösser als windows ?

Für Fragen von Einsteigern und Programmieranfängern...

Linux-Compilat 3x grösser als windows ?

Beitragvon malabarista » 21. Mär 2018, 15:14 Linux-Compilat 3x grösser als windows ?

Ich habe das gleiche Projekt unter Linux 64-Bit kompiliert und unter Windows 32bit.
Das Ergebnis hat mich verblüfft: der exe-File war knapp 2 MB gross, das Linux-Kompilat dagegen 6MB.
Sind solche Unterschiede normal ?
(das Projekt ist ein Installationsprogramm: d.h. es lädt einen Download aus dem Internet und entpackt ihn )

In beiden Fällen waren alle Debug-Möglichkeiten ausgeschaltet.

Kann ich noch etwas mehr zum "Verkleinern" tun ?
malabarista
 
Beiträge: 287
Registriert: 11. Jun 2016, 11:16
Wohnort: Konstanz
OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0 | 
CPU-Target: 64Bit
Nach oben

Beitragvon Timm Thaler » 21. Mär 2018, 16:01 Re: Linux-Compilat 3x grösser als windows ?

Durchaus. Das ist noch harmlos.

Ein einfaches Terminalprogramm mit GUI:
Lazarus für Windows kompiliert: 1,84MByte
Lazarus für Linux kompiliert: 6,06MByte
Purebasic für Windows kompiliert: 56kByte, ja Kilo!

Purebasic optimiert hier gnadenlos auf die Windows-Api für die GUI, Lazarus baut für Linux GTK+ mit ein. Und wenn Du Qt als GUI wählst sieht es wieder anders aus.

Und dann musst Du noch schauen, ob Du den Debugger beim endgültigen Kompilieren rausnimmst.
Timm Thaler
 
Beiträge: 670
Registriert: 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded | 
CPU-Target: Raspberry Pi 3
Nach oben

Beitragvon Warf » 21. Mär 2018, 17:21 Re: Linux-Compilat 3x grösser als windows ?

FPC und speziell Lazarus programme sind recht groß. Das liegt daran das viele packages mehr code mitbringen als du tatsächlich verwendest. Durch smart linking kannst du das zwar reduzieren, allerdings sind die programme dennoch deutlich größer als z.B. das C äquivalent. Wenn du die LCL verwendest kommt vor allem das Widgetset hinzu, also der code um GKT (oder QT) unter Linux, Carbon/Cocoa unter Mac und WinAPI unter Windows zu verwenden. Die größe ist daher stark abhängig vom WS. Selbst ohne die LCL muss der FCL Code ja auch reingelinkt werden, welcher ja auch stark plattformabbhängig ist. Was mal interresant zu testen wäre (habe leider aktuell keine Linux VM mehr sonst würde ich es mal testen), wie es ausschauen würde mit dem CustomDrawn WS, oder mit ganz kleinen anwendungen wie Hello World, die nur die System unit verwenden.

Da stellt sich auch die Frage wie das bei anderen Sprachen aussieht. Wenn hier jemand MSE verwendet könnte man ja auch mal das testen, oder GCC-C (ich denke da C ja viel spezialisiertere includes hat, das die C executeables kleiner werden sollten, und der unterschied zwischen den Systemen auch nicht so groß sein sollte).

Generell ist der Overhead auch eher konstant, das heißt wenn du jetzt ein 20MB windows programm hast wird es unter Linux wahrscheinlich auch nicht größer als 30 MB sein, nur bei kleinen programmen fällt es nunmal auf. Und ein unterschied von 10 MB ist jetzt auch nicht die Welt. Java ist auch nicht kleiner, und C will ich einfach nicht verwenden falls nicht nötig
Warf
 
Beiträge: 964
Registriert: 23. Sep 2014, 16:46
Wohnort: Aachen
OS, Lazarus, FPC: Mac OSX 10.11 | Win 10 | FPC 3.0.0 | L trunk | 
CPU-Target: x86_64, i368, ARM
Nach oben

Beitragvon Mathias » 21. Mär 2018, 17:26 Re: Linux-Compilat 3x grösser als windows ?

Bei Konsolen-Anwendungen sieht es sogar noch schlechter aus.

Mit Debugger:
    Win32 62KB
    Win64 172KB
    Linux32 343KB
    Linux64 412KB

Ohne Debugger:
    MSDOS 16KB
    Win32 33KB
    Win64 44KB
    Linux32 155KB
    Linux64 182KB

    Turbo-Pascal 2,2KB :shock:


Für so ein kleines Programme ist der Speicherverbrauch recht hoch. :shock:
Code: Alles auswählen
program Project1;
begin
  WriteLn('Hello World');
end.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4263
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Warf » 21. Mär 2018, 18:39 Re: Linux-Compilat 3x grösser als windows ?

Grade mal für GCC-C für linux x64 getestet:

Code: Alles auswählen
#include<stdio.h>
 
int main(int argc, char**argv) {
  printf("Hello World");
  return 0;
}


12 KB. Auch nicht sonderlich klein, aber um einiges kleiner als FPC.

Delphi 10.2 schafft für 32 Bit ohne debugger übrigens 45 KB ist damit in einer ähnlichen größenordnung wie FPC. Daher gehe ich davon aus das es wirklich an der größe der System unit liegt
Warf
 
Beiträge: 964
Registriert: 23. Sep 2014, 16:46
Wohnort: Aachen
OS, Lazarus, FPC: Mac OSX 10.11 | Win 10 | FPC 3.0.0 | L trunk | 
CPU-Target: x86_64, i368, ARM
Nach oben

Beitragvon Mathias » 21. Mär 2018, 19:46 Re: Linux-Compilat 3x grösser als windows ?

Grade mal für GCC-C für linux x64 getestet:

Bei mir ist es nur 8,6KB.

Daher gehe ich davon aus das es wirklich an der größe der System unit liegt

Werden dort nicht gebrauchte Units, nicht weg optimiert ?
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4263
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Warf » 22. Mär 2018, 01:07 Re: Linux-Compilat 3x grösser als windows ?

Mathias hat geschrieben:Bei mir ist es nur 8,6KB.

grade geschaut, gcc unter windows selbes programm 40 KB

Mathias hat geschrieben:Werden dort nicht gebrauchte Units, nicht weg optimiert ?


Jain, es ist einfach deutlich aufgeteilter. Die System Unit von Pascal kann viele dinge, z.B. IO Funktionalität (WrtieLN/printf) ist in c in stdio, Memory management (GetMem/malloc) in stdlib, string funktionen (pos/strstr) in string. Die liste geht noch ein bisschen länger. Es werden also nur kleine subunits die tatsächlich verwendet werden zusammengelinkt, während man bei pascal direkt die komplette systemunit reingeworfen bekommt. Natürlich braucht jedes vernünftige C program jede der oben genannten includes, weshalb das für ein beispiel was nicht grade Hello world ist wahrscheinlich etwas anders aussehen sollte
Warf
 
Beiträge: 964
Registriert: 23. Sep 2014, 16:46
Wohnort: Aachen
OS, Lazarus, FPC: Mac OSX 10.11 | Win 10 | FPC 3.0.0 | L trunk | 
CPU-Target: x86_64, i368, ARM
Nach oben

Beitragvon theo » 22. Mär 2018, 09:45 Re: Linux-Compilat 3x grösser als windows ?

malabarista hat geschrieben:Kann ich noch etwas mehr zum "Verkleinern" tun ?


Die Frage ist einfach immer: Warum?
Jedes gut aufgelöste Foto ist heute so groß.
Mit smart linking kriegt man die Grösse noch runter und zum Versenden kann man es zippen, aber es ist doch eigentlich völlig egal.
theo
 
Beiträge: 8054
Registriert: 11. Sep 2006, 18:01

Beitragvon relocate » 22. Mär 2018, 13:48 Re: Linux-Compilat 3x grösser als windows ?

theo hat geschrieben:
malabarista hat geschrieben:Kann ich noch etwas mehr zum "Verkleinern" tun ?


Die Frage ist einfach immer: Warum?


Das ist ma 'ne Frage. Weil es nicht nötig erscheint, weil auch in heutigen Zeiten Platz endlich ist (vor allem beim Download über die ach so tollen LTE Tarife).
Weil es mal gut wäre, wenn man wieder mehr optimieren würde.

theo hat geschrieben:Jedes gut aufgelöste Foto ist heute so groß.


Das ist die enthaltene Information aber auch relevant.

theo hat geschrieben:Mit smart linking kriegt man die Grösse noch runter und zum Versenden kann man es zippen, aber es ist doch eigentlich völlig egal.


Scheiß drauf, Resourcenverschwendung ist en vogue... :roll:
Bei einem Programm ist das eventuell egal, aber jetzt das ganze mal 10, da überlege ich mir aber 3mal ob ich das Programm nutze...
relocate
 
Beiträge: 43
Registriert: 24. Jan 2012, 11:47
OS, Lazarus, FPC: Win (L- FPC 2.4.4) | 
CPU-Target: 32Bit
Nach oben

Beitragvon theo » 22. Mär 2018, 13:55 Re: Linux-Compilat 3x grösser als windows ?

relocate hat geschrieben:Bei einem Programm ist das eventuell egal, aber jetzt das ganze mal 10, da überlege ich mir aber 3mal ob ich das Programm nutze...


Wirklich? Dann darfst du aber kein einziges Youtube Video mehr schauen etc.
Übertreib mal nicht.
theo
 
Beiträge: 8054
Registriert: 11. Sep 2006, 18:01

Beitragvon relocate » 22. Mär 2018, 14:06 Re: Linux-Compilat 3x grösser als windows ?

theo hat geschrieben:
relocate hat geschrieben:Bei einem Programm ist das eventuell egal, aber jetzt das ganze mal 10, da überlege ich mir aber 3mal ob ich das Programm nutze...


Wirklich? Dann darfst du aber kein einziges Youtube Video mehr schauen etc.
Übertreib mal nicht.


1. Die Daten sind flüchtig.
2. Die Daten sind ebenfalls relevant (vermutlich, na ja, nicht immer).
3. Aber die Daten sind flüchtig.
4. Wo ist der Unterschied?

Wenn das Programm unter Linux einfach so mal 3 mal so groß ist, wie unter Windows (wobei ich das auch für unnötig halte),
dann gibt es da einfach Optimierungspotential und zu Fragen Warum ist einfach kontraproduktiv und ebenfalls überflüssig.
Vor allem, wenn dann diese Linuxprogramm ggf. (WARUM auch immer) auf einem Raspi oder Co. eingesetzt werden sollen ist gerade Größe auf jeden Fall relevant.

Was spräche dagegen, mal an die Optimierung von FPC/LAZ zu gehen und zu zeigen, es geht besser.
relocate
 
Beiträge: 43
Registriert: 24. Jan 2012, 11:47
OS, Lazarus, FPC: Win (L- FPC 2.4.4) | 
CPU-Target: 32Bit
Nach oben

Beitragvon m.fuchs » 22. Mär 2018, 14:27 Re: Linux-Compilat 3x grösser als windows ?

relocate hat geschrieben:Was spräche dagegen, mal an die Optimierung von FPC/LAZ zu gehen und zu zeigen, es geht besser.

Überhaupt nichts, ich bin mir sicher dass sich alle über dein Angebot freuen werden.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
m.fuchs
 
Beiträge: 1963
Registriert: 22. Sep 2006, 18:32
Wohnort: Berlin
OS, Lazarus, FPC: Winux (L 1.8.4, FPC 3.0.4) | 
CPU-Target: x86, x64, arm
Nach oben

Beitragvon relocate » 22. Mär 2018, 14:40 Re: Linux-Compilat 3x grösser als windows ?

m.fuchs hat geschrieben:
relocate hat geschrieben:Was spräche dagegen, mal an die Optimierung von FPC/LAZ zu gehen und zu zeigen, es geht besser.

Überhaupt nichts, ich bin mir sicher dass sich alle über dein Angebot freuen werden.


relocate hat geschrieben:Was spräche dagegen, mal an die Optimierung von FPC/LAZ zu gehen und zu zeigen, es geht besser.

Konjunktiv!
Sowohl meine Fähigkeiten, als auch meine Zeit sind definitiv ausgereizt, in jeder Hinsicht.
Für mich, für meine Projekte aber mache ich das, ich optimiere wo es nur geht. Das fängt damit an, dass ich Lazarus nicht nutze... :D
relocate
 
Beiträge: 43
Registriert: 24. Jan 2012, 11:47
OS, Lazarus, FPC: Win (L- FPC 2.4.4) | 
CPU-Target: 32Bit
Nach oben

Beitragvon theo » 22. Mär 2018, 14:48 Re: Linux-Compilat 3x grösser als windows ?

relocate hat geschrieben:4. Wo ist der Unterschied?

Ich weiß wirklich nicht,worauf du hinaus willst.
Wahrend beim schauen eines Online Videos mehrere Computer beteiligt sind und Strom fressen, interessiert die Dateigröße des Executable in dieser Grössenordnung auf deiner Festplatte eigentlich ökologisch nicht weiter.
Aber lass gut sein. Mich interessiert dein extreme Meinung eigentlich gar nicht mehr.
theo
 
Beiträge: 8054
Registriert: 11. Sep 2006, 18:01

Beitragvon Timm Thaler » 22. Mär 2018, 15:23 Re: Linux-Compilat 3x grösser als windows ?

relocate hat geschrieben:Vor allem, wenn dann diese Linuxprogramm ggf. (WARUM auch immer) auf einem Raspi oder Co. eingesetzt werden sollen ist gerade Größe auf jeden Fall relevant.


Ich bin ja auch für Ressourcenschonung, und beim AVR Controller kämpfe ich auch um jedes Byte - naja, nicht jedes...

Aber wenn ich sehe was auf dem Raspi sonst so rumgammelt, da mache ich mit um ein paar mehr MByte mehr für mein Programm keine Sorgen. Was mich viel mehr stört ist schwer vorhersagbares Langzeitverhalten. So habe ich immer noch das Problem, dass GUI-Programme gerade unter Linux über mehrere Tage Speicher akkumulieren bis zur Unbenutzbarkeit. Und da bekommt man ganz schwer raus, woran das liegt.
Timm Thaler
 
Beiträge: 670
Registriert: 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded | 
CPU-Target: Raspberry Pi 3
Nach oben

» Weitere Beiträge siehe nächste Seite »
Nächste

Zurück zu Einsteigerfragen



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste

porpoises-institution
accuracy-worried