AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Lazarus, EXE groß

Ein Thema von Lyan · begonnen am 6. Okt 2012 · letzter Beitrag vom 7. Okt 2012
Antwort Antwort
Seite 3 von 3     123   
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#21

AW: Lazarus, EXE groß

  Alt 7. Okt 2012, 04:58
siehe die geilen 64K-Programme
Von denen sind, neben gelegentlichen Handassemblierungen, fast alle aber auch gepackt (Selten UPX, oft .kkrunchy, ab und an Eigenbauten der jeweiligen Crews)

@Topic:
Als Fan von beidem, kleinen Executables und komfortablen wartbarem Code, empfinde ich das Thema oft als Gratwanderung. Kleine Dateien erzeugen irgendwie einen Eindruck von "oh, da hat sich der Herr Compiler aber viel Mühe gegeben beim Optimieren, diese Sorgfalt legt er sicher auch an anderen Stellen an", wenn ich mir das aber über Einbußen im Umgang mit meinem Code erkaufen muss, entgleitet das zu einer Art Kunstform, die ich eher in meiner Freizeit zur Befriedigung meines Perfektionsdranges bei Nebensächlichkeiten sehe. Wenn ich mit Code Geld verdienen will, müssen die Quellen allen Komfort und zurück zulassen, da kümmert mich die Größe nicht mehr. Es sei denn es artet so weit aus, dass die Portabilität leidet. Nicht die zwischen diversen OS, sondern von mir zum Kunden. Die Größe darf meinetwegen hier also gerne mit den verfügbaren Übertragungswegen und Speichermedien mitwachsen, und das wäre das andere Ende meiner Gratwanderung.

Ob ich nun ein Framework brauche oder nicht, ist mir im Grunde auch fast egal. So lange es eines der auf Endanwender weit verbreiteten ist (im Prinzip .NET und JRE), und somit einen Quasi-Standard bildet, soll es mir eben so recht sein wie statisches Linking. Die angestellten Vergleiche hier sind teils wirklich recht... unbrauchbar und kaum ein Maß, und ich bezweifle, dass es da ein allgemeingültiges und rein technisch begründbares gibt. Hier ist einfach viel Präferenz im Spiel. Seitens des Entwicklers und auch des Kunden, und so lange beide mit einer Lösung leben können ist alles gut. Wenn nicht, dann hat der Kunde ein Programm, und der Dev einen Kunden weniger. Ob es einem von beiden wert ist seine Vorlieben zu ändern (und ggf. nen Stück Arbeit in Kauf zu nehmen) ist dann jedem selbst überlassen. Die Tools an sich sind alle gut, manche für Dinge besser als andere und umgekehrt, womit wieder einmal gilt: Das passende Werkzeug für die Aufgabe zu wählen ist schon halb programmiert Und wenn das Ziel kleine EXEn sind, dann war der Griff nach Delphi/FPC halt einfach schlecht. Als Entwickler ist es eben auch meine Aufgabe, zu wissen womit ich mein Ziel am besten erreiche. Wenn ich nachher feststelle, dass meine Wahl Murks war, dann kann man zwar nach Verbesserungen suchen, aber sicher nicht dem Tool die Schuld an meiner mangelnden Expertise/Recherche geben.

@Lazarus: Die Namen der Optionen sind allerdings wirklich etwas missverständlich . Solche Infos dürften da mindestens in Form eines Hits rein, oder aber gleich die Optionen so nennen, dass es eindeutig ist. Ich hätte das auch nie erahnt.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#22

AW: Lazarus, EXE groß

  Alt 7. Okt 2012, 09:36
@Medium: Kann dir nur voll zustimmen.

Bisher hat sich bei uns noch keiner über die Dateigröße (eher über Startzeiten der Exe bis zur Rückmeldung/Anzeige eines Splashscreens (vor einigen Jahren)) beschwert.
Und wir packen noch neben der Delphi-Exe eine JRE parallel zur Exe um manche Dinge in Java zu erledigen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#23

AW: Lazarus, EXE groß

  Alt 7. Okt 2012, 12:14
Hallo himitsu!

PS: Bei Delphi und Lazarus kann man auch noch so Einiges einsparen, wenn man gewisse Resourcen und Realocationstabellen rausschmeißt.
Was sind "gewisse Ressourcen"? Meintest Du die Laufzeittypinformationen (RTTI)? Das war das bisher heftigste (aber auch wirkungsvollste), was ich bisher bestritt, um die Compilatsgrößen zu verringern. Und wie entfernt man Reallocationstabellen? Gibt es dazu irgendwo eine Anleitung im Internet?

Besten Dank!

Viele Grüß

Delphi-Laie

Geändert von Delphi-Laie ( 7. Okt 2012 um 18:39 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#24

AW: Lazarus, EXE groß

  Alt 7. Okt 2012, 13:58
Weißt du wofür das Ding da ist?

Wenn Windows die Datei im Speicher verschieben muß, dann kann es darüber die Adressen anpassen.
Wird das nicht gemacht, dann funktioniert der Code nicht mehr und es passiert sonstwas Unschönes.

Ja, aktuell ist es so, daß Windows die EXE als Erstes in den Speicher läd, womit noch nirgendwo etwas belegt ist und die EXE (im Gegensatz zu einer DLL) nie verschoben werden muß.
Aber wer weiß ob Windows daran mal was ändert.
Und dann will man ja gleich noch mehr laden, also nutzt man UPX und Co., aber schon hat man ein grßes Problem, denn dann ist die "EXE" nicht mehr das Erste, denn der Preloader wird vorgeschaltet, welche die "EXE" dann entpackt und läd ... schwups, kann es sein, daß die "EXE" verschoben werden könnten und *peng*

Das war ein Beispiel dafür, was man machen könnte (wenn man weiß was man macht), aber was man nicht unbedingt machen sollte.
Stattdessen gibt es ja noch genügend "offizielle" Wege, wie man was loswerden könnte.
http://www.delphipraxis.net/170853-l...ml#post1185990
http://www.delphipraxis.net/170520-d...ml#post1183801
... (sowas Ähnliches wurde hier ja auch für Lazarus genannt)
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#25

AW: Lazarus, EXE groß

  Alt 7. Okt 2012, 14:09
Ja, aktuell ist es so, daß Windows die EXE als Erstes in den Speicher läd, womit noch nirgendwo etwas belegt ist und die EXE (im Gegensatz zu einer DLL) nie verschoben werden muß.
Aber wer weiß ob Windows daran mal was ändert.
ist doch schon:

Zitat:
When running native 64-bit binaries on Windows Vista and above, ASLR (Address Space Layout Randomization) is mandatory, and thus relocation sections cannot be omitted by the compiler.
(Aus Wiki)
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#26

AW: Lazarus, EXE groß

  Alt 7. Okt 2012, 14:24
Cool, dann isses ja nun egal, daß fast alle bei den DLLs ständig vergessen die BaseAddress einzustellen.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#27

AW: Lazarus, EXE groß

  Alt 7. Okt 2012, 17:48
Kleine Dateien erzeugen irgendwie einen Eindruck von "oh, da hat sich der Herr Compiler aber viel Mühe gegeben beim Optimieren, diese Sorgfalt legt er sicher auch an anderen Stellen an"
Kann man auch anders betrachten: "Wenn die Programmierer so viel Zeit in die Optimierung gesteckt haben, muessen sie die Zeit ja irgendwo eingespart haben"



@Relocation:
Gibt ja auch noch die Alternative des positionsunabhaengigen Codes. Empfinde ich vom Prinzip her als schoeneren Ansatz als alle Adressen vorm Ausfuehren zu aendern - selbst wenn es vllt. einige Nachteile mit sich bringen kann.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz