EXE-Groessen : PB vs. C++

Fragen zu allen anderen Programmiersprachen.
Dare Devil
Beiträge: 237
Registriert: 17.10.2008 18:24
Kontaktdaten:

EXE-Groessen : PB vs. C++

Beitrag von Dare Devil »

Hallo!
Ich hab aus Langeweile etwas ausprobiert.
Ich hab ein Programm in C++ und anschliessend in PB geschrieben. Das Programm gibt eine einfache MessageBox aus:
PB hat geschrieben:MessageBox_(0, "Inhalt", "Titel", #MB_ICONINFORMATION)
;API-Funktion, da MessageRequester noch einen zusaetzlichen KB frisst

C++ hat geschrieben:#include <windows.h>

int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
MessageBox(0, "Inhalt", "Titel", MB_ICONINFORMATION);
return 0;
}


Warum ist die Exe, die in PB erstellt wird nur 2KB gross, waehrend die Exe in C++ "gigantische" 7,5KB gross ist?
Das wuerde mich brennend interessieren... Was bindet denn C++ noch ein, was PB nicht tut?

Nebenfrage: Warum ist die MessageRequester-Funktion um 1KB groesser als die API-Funktion? Was macht PB da noch?
Bild + Bild

Bild
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

was c++ einbindet steht ja da :
#include <windows.h>
vermutlich n bisschen mehr als nötig ist ... kenne mich da nicht aus
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

Mach doch mal den Vergleich mit nem "Selbstgemachten" Fenster... mit Button und Text...
(\/) (°,,,°) (\/)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

PB linkt IMHO einen optimierten PE-Header, der den Größenunterschied
ausmacht.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Beitrag von Thorium »

Der Messagerequster ist warscheinlich schon um einiges Kleiner als 1KB, der ruft ja auch nur die API auf.
Allerdings werden die Sections im PE, der EXE um festgelegte "Blöcke" vergrößert. Z.B. wenn die exe 2kb groß ist und diese auch ausgenutzt werden. Du nun noch etwas Code hinzufügst bist du über den 2KB und die Codesektion wird vergrößert um diesen festen Wert, z.b. 1KB. Kann man dem Linker sagen wie groß diese Blöcke sein sollen. Das nennt sich Alignment.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: EXE-Groessen : PB vs. C++

Beitrag von DarkDragon »

http://www.purebasic.fr/german/viewtopic.php?t=11965

Es wird die standard-bibo standardmäßig mitgelinkt.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Antworten