Ein dickes Ei mit drin?

Rund um die LCL und andere Komponenten
MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Ein dickes Ei mit drin?

Beitrag von MmVisual »

Hallo,

Ich nutzte bis vor kurzem die Lazarus Version von Ende Juli. Meine EXE Gestrippt und mit UPX kleiner gemacht waren es 1,1MB.

Nun habe ich die aktuelle Lazarus Version, gestrippt und mit UPX die EXE keiner gemacht hat diese nun 1,4MB.

Ich meine, da wurde weiter programmiert, aber dass da komprimiert 300KB mehr drin ist, das kommt mir doch recht komisch vor.
- Mein Quellcode ist der gleiche!
- Ich hatte das auch schon mit einer Version Ende August gemerkt, da dachte ich es muss vielleicht noch ein Bug entstanden sein, also habe ich gewartet.

Gibt es dafür eine Erklärung? Wurden irgend welche Ressourcen mit dazu eingebunden, die ich eigentlich gar nicht haben will/brauche?

Mir kommt das sehr komisch vor, daher dieser Thread.

Kann mir bitte jemand zeigen woran das liegen könnte?

Grüße Markus.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: Ein dickes Ei mit drin?

Beitrag von Teekeks »

Du nutzt ja schon immer die LCL mit.
Diese wird von Version zu Version mächtiger und scheinbar kommen die Optimierungen nicht in der selben Geschwindigkeit vorwärts wie die erweiterung.

So würde ich das zumindest erklären.

Gruß Teekeks

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: Ein dickes Ei mit drin?

Beitrag von Euklid »

Teekeks hat geschrieben:Du nutzt ja schon immer die LCL mit.
Diese wird von Version zu Version mächtiger und scheinbar kommen die Optimierungen nicht in der selben Geschwindigkeit vorwärts wie die erweiterung.
MSVisual: Dieser vom Teekeks genannte Einfluss kann möglicherweise reduziert werden, wenn SmartLinking aktiviert ist.

Viele Grüße, Euklid

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Ein dickes Ei mit drin?

Beitrag von MmVisual »

So wie im Bild sehen meine Einstellungen aus (Standard Lazarus)

Auch wenn ich den -CX Parameter aktiviere, wird die EXE nicht wirklich kleiner. (nach Strip/UPX)

Über weitere Tipps wäre ich dankbar.

Grüße Markus.
Dateianhänge
Bild1.png
EleLa - Elektronik Lagerverwaltung - www.elela.de

marcov
Beiträge: 1102
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: Ein dickes Ei mit drin?

Beitrag von marcov »

Sind alle prekompilierten Units (von FPC und Lazarus) schon mit -CX kompiliert? FPC releases sind so kompiliert, aber Snapshots oft nicht.

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Ein dickes Ei mit drin?

Beitrag von MmVisual »

Ich habe die Software einfach von http://www.hu.freepascal.org/lazarus" onclick="window.open(this.href);return false; geladen und das Windows-Setup gestartet.

Danach in Lazarus noch Zeos installiert.

Ich habe mal Lazarus neu Kompilliert und die Einstellung so gemacht wie im Bild gezeigt. Aber neukompillieren meiner EXE macht nichts kleiner.

Hab ich jetzt da was falsch eingegeben? (Meine Lazarus.exe hat 135MB)

Gruß Markus.
Dateianhänge
Bild1.png
EleLa - Elektronik Lagerverwaltung - www.elela.de

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Ein dickes Ei mit drin?

Beitrag von Socke »

marcov hat geschrieben:Sind alle prekompilierten Units (von FPC und Lazarus) schon mit -CX kompiliert? FPC releases sind so kompiliert, aber Snapshots oft nicht.
Nach meinem Verständnis hat -CX nur Auswirkungen auf das Kompilieren von Units. D.h. die vorkompilierten Units können dann smart gelinkt werden -- oder auch nicht. Damit das geschieht, muss noch die Option -XX aktiviert werden.
MmVisual hat geschrieben:Ich habe mal Lazarus neu Kompilliert und die Einstellung so gemacht wie im Bild gezeigt. Aber neukompillieren meiner EXE macht nichts kleiner.

Hab ich jetzt da was falsch eingegeben? (Meine Lazarus.exe hat 135MB)
135 MB sprechen für Debugging Symbole (ich weiß nicht, warum die per Standard in Lazarus enthalten sind...) und wahrscheinlich wenige Optimierungen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Ein dickes Ei mit drin?

Beitrag von MmVisual »

Wenn ich die Lazarus-Exe Strippe, dann wird die schon kleiner. Wenn ich in dem Dialog die Parameter "-CX -Xs" angebe, dann strippt da nichts automatisch. Ich dachte -Xs ist für Strippen zuständig?
EleLa - Elektronik Lagerverwaltung - www.elela.de

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Ein dickes Ei mit drin?

Beitrag von Socke »

-Xs soll automatisch strippen. Ich glaube nur, dass das keinen Effekt hat, wenn gleichzeitig -g angegeben ist. Mit -Xg kannst du zumindest die Debuggersymbole in eine extra Datei schreiben lassen. Ich empfehle zusätzlich -CX und -XX immer gemeinsam zu verwenden.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Ein dickes Ei mit drin?

Beitrag von MmVisual »

Jetzt habe ich Lazarus mit -CX -XX -Xs kompilliert, weder Lazarus wurde kleiner, noch meine EXE. :(

Hat noch jemand eine Idee?
EleLa - Elektronik Lagerverwaltung - www.elela.de

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: Ein dickes Ei mit drin?

Beitrag von Euklid »

Abwarten, bis sich das Problem mit einer neuen Lazarus-Version von selbst behebt ;)

Mal im Ernst: In Zeiten des DSL haben 0,3 MB auch nicht mehr so das Gewicht.

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Ein dickes Ei mit drin?

Beitrag von MmVisual »

Es geht nicht um die Größe, sondern viel mehr darum dass es ein Hinweis ist, dass sich in Lazarus oder FPC ein Bug eingeschlichen haben könnte.

Theoretisch: Der FPC wurde so geändert, dass er einen effizienteren Code machte, dafür kann der UPX nicht mehr zu gut komprimieren.
Das wäre zumindest eine Antwort, mit der ich zu frieden wäre. Es wäre natürlich nicht schlecht wenn das jemand, der die Internas kennt, bestätigen könnte.

Ich achte nunmal auf solche Dinge, denn die bedeuten oftmals neue Probleme an irgend einer anderen Stelle.
Genauso wie ich auf die Geschwindigkeit immer achte, denn wenn das mal langsam wird, dann hab ich mist programmiert.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Ein dickes Ei mit drin?

Beitrag von Socke »

MmVisual hat geschrieben:Theoretisch: Der FPC wurde so geändert, dass er einen effizienteren Code machte, dafür kann der UPX nicht mehr zu gut komprimieren.
Das wäre zumindest eine Antwort, mit der ich zu frieden wäre. Es wäre natürlich nicht schlecht wenn das jemand, der die Internas kennt, bestätigen könnte.
UPX ist doch ein reiner Komprimierungsalgorithmus. Ihm sollte es daher auch egal sein, wie effizient der zu komprimierende Binärcode ist.
MmVisual hat geschrieben:Es geht nicht um die Größe, sondern viel mehr darum dass es ein Hinweis ist, dass sich in Lazarus oder FPC ein Bug eingeschlichen haben könnte.
Ich bin so optimistisch und schiebe das auf neue Features. Genaueres wirst du wahrscheinlich nur durch eine detaillierte Differenzanalyse des entsprechenden Quellcodes (RTL, FCL und LCL; alles andere ist egal/gleich) herausfinden. Es reicht ja schon aus, eine Funktion als virtual zu deklarieren, damit sie ohne Optimierungen selbst bei Smartlinking mit in das Programm gelinkt wird (-> ein Wort => viele zusätzliche Zeilen im Programm).

Vielleicht schaust du dir auch mal die Whole Program Optimization an. Mein etwas älteres Lazarus (SVN) hat dafür noch keine Optionen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Ein dickes Ei mit drin?

Beitrag von MmVisual »

Ich möchte jetzt Nägel mit Köpfe machen.

Ich habe folgendes installiert:
Lazarus-0.9.29-27083-fpc-2.4.3-20100813-win32.exe >> EXE, nach Strip und UPX 1170KB
Lazarus-0.9.29-27409-fpc-2.4.3-20100919-win32.exe >> EXE, nach Strip und UPX 1454KB
(mein Quellcode beides mal der gleiche)

Jetzt möchte ich gerne die Versionen dazwischen installieren.
Kann ich irgendwo die EXE Lazarus-Versionen dazwischen noch laden?
Die Dateien vergleichen mit den über 300 Versionen dazwischen ist doch etwas mühsam, daher würde ich gerne diese Setups, die dazwischen waren laden und installieren. Leider habe ich nur diese beiden Versionen. Wenn ich auch nur ein paar Versionen dazwischen bekommen könnte, dann würde das meine Suche doch enorm eingranzen. Danke für eure Hilfe!

Heute nutze ich die Version "Lazarus-0.9.29-28634-fpc-2.4.2-20101206-win32.exe", also mit dem FPC 2.4.2 und die EXE ist dennoch 1,4MB groß. Daher vermute ich diese Extra 300 KB kommen nicht vom FPC sondern von Lazarus.

Gruß Markus.
EleLa - Elektronik Lagerverwaltung - www.elela.de

martin_frb
Beiträge: 588
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: Ein dickes Ei mit drin?

Beitrag von martin_frb »

Die Versionen dazwischen kriegst Du nur ueber SVN. Ist aber nicht weiter schwierig.

Was 300 Revisionen angeht, entweder war es ein kontinuierlicher Anstieg, dann kannst du keine Revision finden die "schuld" war, oder: binary search.
27083 - 27409 => installiere die Mitte: 27245

Wenn die schon gewachsen ist, Mitte davor (27165), sonst Mitte danach.
300 Revisionen = 9 mal testen

Aber überlege dir vorher wozu...
Selbst wenn du die findest... Das wird 99% wahrscheinlich nix aendern.

Antworten