Dimensione di un .exe dopo la compilazione

Forum di discussioni su C e C++

Moderatori: Toki, Rey

Dimensione di un .exe dopo la compilazione

Messaggioda gi@nluk@ » 07 mar 2010, 12:52

Salve a tutti.
Ho notato che copilando codice c++ con dev-c++ si ottiene una dimensione del file eseguibile molto maggiore rispetto alla compilazione effettuata in ambiente visual studio tramite il batch vcvars.bat e successivamente col comando cl.

Faccio un esempio: considerando il seguente codice:

Codice: Seleziona tutto
#include<iostream>

using namespace std;

int main()
{
    cout << "ciao";
}


Compilando nei due modi ottengo:

ciao-dev.exe 464 KB
ciao-vis.exe 108 KB


Posso immaginare che ciò dipenda da qualche impostazione di dev-c++ ma non ho idea di quale sia.
Dev-c++ l'ho lasciato così come l'ho installato, a parte qualche opzione dell'ambiente editor.

Qualcuno può aiutarmi?
gi@nluk@
New Entry
 
Messaggi: 10
Iscritto il: 23 feb 2010, 13:45

Re: Dimensione di un .exe dopo la compilazione

Messaggioda gi@nluk@ » 09 apr 2010, 10:54

Mica per caso può dipendere da qualche impostazione che permette di scegliere se compilare in modalità DEBUG oppure RELEASE?
gi@nluk@
New Entry
 
Messaggi: 10
Iscritto il: 23 feb 2010, 13:45

Re: Dimensione di un .exe dopo la compilazione

Messaggioda ixamit » 09 apr 2010, 21:39

Non hai modo di controllare i parametri che utilizza attraverso la GUI? Mi riferisco ad una traccia di makefile che andrebbe a costruire ed utilizzare.
Le informazioni debug presenti nel codice aumentano di circa il doppio la dimensione. In Windows non esiste un comando simile a 'strip' di Unix per togliere quelle informazioni e confrontare le dimensioni degli eseguibili?

Saluti,
Max
ixamit
Utente Senior
 
Messaggi: 256
Iscritto il: 14 ott 2009, 00:33

Re: Dimensione di un .exe dopo la compilazione

Messaggioda gi@nluk@ » 18 apr 2010, 17:08

Girovagando per il web, dopo aver letto qualche articolo, ho fatto alcune prove:
innanzitutto ho settato "Comprimi l'eseguibile" su yes, tra le "Opzioni di compilazione" di Dev c++, nella scheda "Generazione di codice/Ottimizzazioni" e poi scegliendo "Linker".

Con questo accorgimento sono passato dai 464 Kbyte a circa 260 Kbyte che per un programmino che ti saluta e basta, sono ancora troppi.

Cosa più importante e sinceramente che mi ha lasciato un po' perplesso, ho sostituito il codice originale:

Codice: Seleziona tutto
#include<iostream>

using namespace std;

int main()
{
    cout << "ciao";
}



con il seguente (l'equivalente che utilizza la vecchia libreria del C):

Codice: Seleziona tutto
#include<stdio.h>

int main()
{
        printf("ciao");
}


In questo modo, ho ottenuto la sbalorditiva dimensione di soli 5.50 KByte!!!
gi@nluk@
New Entry
 
Messaggi: 10
Iscritto il: 23 feb 2010, 13:45

Re: Dimensione di un .exe dopo la compilazione

Messaggioda ixamit » 18 apr 2010, 23:01

A naso sembra di vedere un grande buco. L'eseguibile c++ dovrebbe avere una dimensione lievemente superiore rispetto al padre. 464 o 260 Kbytes sono esageratamente troppi in tutti i sensi...

~Max~
ixamit
Utente Senior
 
Messaggi: 256
Iscritto il: 14 ott 2009, 00:33

Re: Dimensione di un .exe dopo la compilazione

Messaggioda gi@nluk@ » 20 apr 2010, 17:51

Grazie dell'interessamento Max.
Esattamente cosa intendi per "grande buco"?
gi@nluk@
New Entry
 
Messaggi: 10
Iscritto il: 23 feb 2010, 13:45

Re: Dimensione di un .exe dopo la compilazione

Messaggioda ixamit » 20 apr 2010, 23:41

Per grande buco intendo un errore... ma può esser anche vero che si sia voluto (per motivi che non conosco) la Standard Template Library statica.
Comunque, supponendo di avere la suddetta libreria basterebbe un link dinamico per ottenere una dimensione più consona e prossima a quella dell'eseguibile C.

La prova di ciò la dovresti vedere 'dumpando' gli eseguibili.

Saluti,
Max
ixamit
Utente Senior
 
Messaggi: 256
Iscritto il: 14 ott 2009, 00:33


Torna a C/C++

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron
IPROGRAMMATORI.IT 2010. Tutti i diritti riservati. - P.IVA 04135460873 | Pubblicità | Termini e Condizioni - Privacy Policy | RSS 2.0 - Le news di IProgrammatori.itRSS