Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [C/C++] Dimensione dei file

    Programmando anche semplici file in C++ mi sono subito accorto della dimensione un po' "assurda" (da 200kb in su) dei file eseguibili anche per eseguire operazioni semplici del tipo somme e moltiplicazione di interi.
    Oggi ho provato a fare un semplice programma shell che fa da timer (un conto alla rovescia settato dall'utente).
    Scritto in C++ il file eseguibile occupa 468Kb di spazio su HD e 1.280Kb di memoria quando è in esecuzione.
    Scritto in C il file eseguibile occupa 20Kb di spazio su HD e 1.175Kb di memoria quando è in esecuzione.

    Ora io mi chiedo, se il programma è lo stesso come si giustificano i 448Kb di spazio di differenza su HD e i 105Kb di spazio in memoria?

    Gradirei soltanto capire perché a quanto vedo i programmi scritti in C sono più leggeri ed efficenti per quanto riguarda il consumo di risorse, mentre all'università si ostinano a farci programmare in C++.

  2. #2
    L'approccio a oggetti porta via più memoria, perché (ad esempio) anche per i semplici cout, cin, clog e cerr devono essere mantenuti in memoria dei dati e del codice; la differenza di dimensioni dell'eseguibile probabilmente è dovuta al compilatore: stai compilando i sorgenti C e C++ con due compilatori diversi? Hai attivato le ottimizzazioni del compilatore e disattivato la modalità di debug (che inserisce un mucchio di informazioni rinondanti necessarie al debugger per seguire l'esecuzione)?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Ho compilato entrambi i sorgenti con Dev-C++ che dovrebbe tenere la modalità di debug disattivata se non richiesta.

  4. #4
    Moderatore di Sicurezza informatica e virus L'avatar di Habanero
    Registrato dal
    Jun 2001
    Messaggi
    9,782
    Originariamente inviato da dbgtgogeta
    Ho compilato entrambi i sorgenti con Dev-C++ che dovrebbe tenere la modalità di debug disattivata se non richiesta.
    Menu "Progetto"->Opzioni del progetto->Scheda "Compilatore"->Voce "Linker" nel pannello di sx->
    Genera le informazioni di debug-> NO

    migliorata la situazione?
    Leggi il REGOLAMENTO!

    E' molto complicato, un mucchio di input e output, una quantità di informazioni, un mucchio di elementi da considerare, ho una quantità di elementi da tener presente...
    Drugo

  5. #5
    Quell'opzione è già su no

  6. #6
    Nelle opzioni di compilazione cerca "ottimizza per dimensione codice".
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    286
    Tempo fa avevo fatto lo stesso esperimento compilando in assembly e in C++ lo stesso semplice programmino dopo di che li ho dissassemblati entrambi. Inutile dire che il rapporto tra il numero di linee di codice dei due disassemblati erano circa di venti a uno.

    La programmazione ad oggetti può essere più produttiva, ci da molti vantaggi soprattutto in fase di manutenzione ma impegna molte risorse. Ci si affida (o si confida) per questo a macchine sempre più potenti, ovviamente finché possibile. Invece ho l'impressione che alcuni produttori di software abbiano un po' ecceduto in questo senso, provocando un calo delle performance (velocità di risposta) nelle ultime versioni dei loro software a fronte di miglioramenti troppo poco significativi delle funzioni in essi contenuti.

  8. #8
    Moderatore di Sicurezza informatica e virus L'avatar di Habanero
    Registrato dal
    Jun 2001
    Messaggi
    9,782
    Prova così:

    Menu "Progetto"->Opzioni del progetto->Scheda "Compilatore"->Voce "Linker" nel pannello di sx->
    Comprimi eseguibile-> SI.
    Leggi il REGOLAMENTO!

    E' molto complicato, un mucchio di input e output, una quantità di informazioni, un mucchio di elementi da considerare, ho una quantità di elementi da tener presente...
    Drugo

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 © 2024 vBulletin Solutions, Inc. All rights reserved.