Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di Rplus
    Registrato dal
    Mar 2002
    Messaggi
    150

    [C++] dimensione eseguibili corposo

    ciao a tutti..ho iniziato da pokissimo lo studio del linguaggio c++ a scuola e ho subito notato una certa pesantezza nei miei exe, creati col dev-c++.. semplici programmi di una quindicina di righe mi occupano non meno di 400kb.. (415 per l'esattezza)

    a cos'è dovuto questo peso degli exe? può essere ovviato in qualke modo?

  2. #2
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    Dipende dalle 15 righe

    Controlla di aver compilato in modalità release, a debug prestazioni e dimensioni peggiorano per facilitare il debug.

    Solitamente si ottimizza(si parla sia di dimensioni sia performance) con tool specifichi per qualche processore(io conosco intel C++ compiler ma costa 459 euro VVoVe: ). Poi si può disassemblare il tuo progetto e modificare l'asm, l'alternativa più valida è quella di essere maggior OS dependens, se vale la pena perdere la portabilità si potrebbe usare ad esempio wsprintf() al posto di printf o cout, in questo caso se si usa sempre la funzione win32 presente in windows.h si risparmiano parecchi kb.


    Cmq se posti le 15 righe si potrebbe capire cosa porta a 415kb.

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  3. #3
    Utente di HTML.it L'avatar di Rplus
    Registrato dal
    Mar 2002
    Messaggi
    150
    è una cosa molto semplice come puoi vedere..
    codice:
    #include <iostream.h>
    #include <conio.h>
    
    int main() {
      int num=0,cont=0,media=0;
      while(1) {
        cout<<"inserire un numero (0 per finire): ";
        cin>>num;
        if (!num) break;
        media+=num;
        cont++;
      }
      cout<<"la media e' "<<(float)media/cont<<"\n";
      getch();
      return 0;
    }

  4. #4
    Utente di HTML.it L'avatar di Rplus
    Registrato dal
    Mar 2002
    Messaggi
    150
    come impostazioni nella compilazione nn ho cambiato nulla fatta eccezione l'aggiunta del -Wno-deprecated x evitare warning..

  5. #5
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Dipende ovviamente dal compilatore che usi e dalle opzioni di compilazione; io, con MinGW developer studio, ho un eseguibile di 534 KB con le opzioni standard, che diventano 212 se compilo in modalità release, scegliendo l'opzione di 'minimum size'. Tra l'altro il file oggetto del tuo programma è di soli 1,69 kb, mentre linkando con le varie librerie si ariva a 212 KB.

    comunque dovresti usare

    #include <iostream>


    e non

    #include <iostream.h>

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Anch'io ottengo un eseguibile di 212 KB con Dev-Cpp. Ho anche tentato di "ottimizzare" qua e là il codice, in questo modo, ma l'eseguibile non cambia di un solo byte:
    codice:
    #include <iostream.h>
    #include <conio.h>
    
    int main() {
      int num=-1,cont=0,media=0;
      while(num) {
        cout<<"inserire un numero (0 per finire): ";
        cin>>num;
        media += num;
        cont++;
      }
      cout<<"la media e' "<<(float)media/(--cont)<<"\n";
      getch();
      return 0;
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Utente di HTML.it L'avatar di Rplus
    Registrato dal
    Mar 2002
    Messaggi
    150
    Originariamente inviato da anx721
    Dipende ovviamente dal compilatore che usi e dalle opzioni di compilazione; io, con MinGW developer studio, ho un eseguibile di 534 KB con le opzioni standard, che diventano 212 se compilo in modalità release, scegliendo l'opzione di 'minimum size'. Tra l'altro il file oggetto del tuo programma è di soli 1,69 kb, mentre linkando con le varie librerie si ariva a 212 KB.

    comunque dovresti usare

    #include <iostream>


    e non

    #include <iostream.h>
    la modalità release nel mio nn la trovo..cmq avevo già provato a fare

    #include <iostream>

    e mi dice cin e cout nn dikiarate da nessuna parte..qnd sono costretto a usare il .h mettendo il deprecated (altrimenti m da il warning)..sbaglio qualcosa??

  8. #8
    Utente di HTML.it L'avatar di Rplus
    Registrato dal
    Mar 2002
    Messaggi
    150
    Originariamente inviato da LeleFT
    Anch'io ottengo un eseguibile di 212 KB con Dev-Cpp. Ho anche tentato di "ottimizzare" qua e là il codice, in questo modo, ma l'eseguibile non cambia di un solo byte:
    codice:
    #include <iostream.h>
    #include <conio.h>
    
    int main() {
      int num=-1,cont=0,media=0;
      while(num) {
        cout<<"inserire un numero (0 per finire): ";
        cin>>num;
        media += num;
        cont++;
      }
      cout<<"la media e' "<<(float)media/(--cont)<<"\n";
      getch();
      return 0;
    }
    Ciao.
    usi la 4 o la 5 beta? io ho quest'ultima..ma nn toccato le impostazioni del compilatore!

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Versione 4.9.4 senza aver mai toccato nessuna impostazione del compilatore.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  10. #10
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    se usi iostream devi esplicitamente indicare l'uso del namespace std aggiungendo questa riga dopo gli include:

    using namespace std;

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.