Wie wird (X)IncludeFile in der Exe umgesetzt
-
- Beiträge: 213
- Registriert: 13.07.2008 10:05
- Computerausstattung: Windows 8.1 Pro
AMD Phenom II X4 955 @ 3.2 GHz
4GB RAM
NVIDIA GeForce GTX 660
Re: Wie wird (X)IncludeFile in der Exe umgesetzt
Ich habe jetzt auch mal mein Linux gestartet und es dort getestet. Mit Linux Mint x64 ist die Exe immer gleich groß kein Plan wieso. Scheinbar Funktioniert es unter Windows aber nicht unter Linux mal schauen was die Mac User sagen wie es dort ist.
Windows 8.1 Pro 64Bit | AMD Phenom II X4 955 @ 3.2 GHz | 4GB RAM | NVIDIA GeForce GTX 660
Re: Wie wird (X)IncludeFile in der Exe umgesetzt
Ist das Gleiche wie bei Linux. Dachte es liegt vielleicht an dem String, also das der Stringhoerbie hat geschrieben:kann das noch jemand auf dem Mac mal ausprobieren?
in der executable ist, aber die Prozedur nicht eingefügt wird.
Habe dazu folgendes Beispiel gemacht um das String-Problem auszuschliessen:
Code: Alles auswählen
Macro t
Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5))
Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5))
Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5))
Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5))
Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5))
Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5))
Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5))
Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5))
Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5))
Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5))
Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5))
Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5))
Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5))
Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5))
Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5))
Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5))
Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5))
Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5))
Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5))
Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5))
Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5))
Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5))
Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5))
Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5))
Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5))
Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5))
Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5))
Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5))
Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5))
Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5)) : Test(a + b * c / d + Pow(x,5))
EndMacro
Procedure Test(y = 0)
If x = 12
t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t
t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t
t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t
t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t
t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t
t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t
t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t
t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t
t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t
t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t
t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t
EndIf
EndProcedure
;Test() ; beim zweitem Kompilieren auskommentieren
MessageRequester("EXE SIZE",Str( FileSize(ProgramFilename()) ))
Code: Alles auswählen
; PB 5.21 LTS x86 Mac OS X:
; Mit Test2(): 1.976.876
; Ohne Test2(): 1.976.876
;
; PB 5.21 LTS x64 Mac OS X:
; Mit Test2(): 2.608.864
; Ohne Test2(): 2.608.864
;
; PB 5.21 LTS x86 Windows:
; Mit Test2(): 1.640.960
; Ohne Test2(): 1.640.960
; Ohne Test2(): 7.680 (mit meinem Optimierer)
;
; PB 5.21 LTS x64 Windows:
; Mit Test2(): 2.557.440
; Ohne Test2(): 2.557.440
; Ohne Test2(): 8.192 (mit meinem Optimierer)
Zuletzt geändert von Danilo am 13.02.2014 11:00, insgesamt 1-mal geändert.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
-
- Beiträge: 213
- Registriert: 13.07.2008 10:05
- Computerausstattung: Windows 8.1 Pro
AMD Phenom II X4 955 @ 3.2 GHz
4GB RAM
NVIDIA GeForce GTX 660
Re: Wie wird (X)IncludeFile in der Exe umgesetzt
Dein Test ist nicht besonders gut gewählt. Die Procedure Test ruft sich selber auf da steigt die Optimierung in Pure Basic sowieso bereits aus so intelligent das zu erkennen ist sie nicht.
Deswegen sollte man falls man wert auf kleine Exe Dateien legt auch unter Windows sich ehr selbst darum kümmern als es PB zu überlassen zum Glück ist die Größe heute meist nicht so relevant.
So funktioniert das Beispiel auf Windows und Linux:
Edit:
@Danilo Deine Idee mit dem String ersetzen war gut scheinbar geht es so auch unter Linux!
Deswegen sollte man falls man wert auf kleine Exe Dateien legt auch unter Windows sich ehr selbst darum kümmern als es PB zu überlassen zum Glück ist die Größe heute meist nicht so relevant.
So funktioniert das Beispiel auf Windows und Linux:
Code: Alles auswählen
Macro t
Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5))
Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5))
Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5))
Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5))
Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5))
Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5))
Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5))
Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5))
Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5))
Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5))
Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5))
Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5))
Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5))
Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5))
Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5))
Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5))
Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5))
Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5))
Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5))
Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5))
Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5))
Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5))
Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5))
Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5))
Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5))
Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5))
Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5))
Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5))
Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5))
Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5)) : Sqr(a + b * c / d + Pow(x,5))
EndMacro
Procedure Test(y = 0)
If x = 12
t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t
t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t
t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t
t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t
t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t
t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t
t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t
t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t
t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t
t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t
t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t : t
EndIf
EndProcedure
;Test() ; beim zweitem Kompilieren auskommentieren
MessageRequester("EXE SIZE",Str( FileSize(ProgramFilename()) ))
@Danilo Deine Idee mit dem String ersetzen war gut scheinbar geht es so auch unter Linux!
Windows 8.1 Pro 64Bit | AMD Phenom II X4 955 @ 3.2 GHz | 4GB RAM | NVIDIA GeForce GTX 660
Re: Wie wird (X)IncludeFile in der Exe umgesetzt
Genau darum geht es ja. Bei Optimierungen ist PB einfach nicht sehr intelligent, und allein mit einem kleinenChristian+ hat geschrieben:Dein Test ist nicht besonders gut gewählt. Die Procedure Test ruft sich selber auf da steigt die Optimierung in Pure Basic sowieso bereits aus so intelligent das zu erkennen ist sie nicht.
externen Tool kann man die EXE-Size auf Windows von 2,5 MB auf 8k trimmen.
Habe mein Tool auch bei einem Real-World Project im Einsatz, und 20% - 25% der EXE-Größe
kann da im Schnitt gespart werden, indem man einfach unbenutzte Funktionen entfernt.
Mit mehr integrierten Optimierungen könnte man vielleicht noch mehr sparen und optimieren.
Ich finde das ziemlich schlecht vom Compilerbau her. Aber andere BASIC beginnen mit der
kleinsten EXE als knapp 1MB, von daher kann man sich bei PB kaum beschweren.

Zuletzt geändert von Danilo am 14.02.2014 07:35, insgesamt 1-mal geändert.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Re: Wie wird (X)IncludeFile in der Exe umgesetzt
Ok, so funktioniert es auch bei mir korrekt unter Linux.Christian+ hat geschrieben:So funktioniert das Beispiel auf Windows und Linux:
[...]

Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version