elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 02:51  


Tema destacado: Entra al canal IRC oficial de #elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  porque al compilar pesa tanto un programa?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: porque al compilar pesa tanto un programa?  (Leído 2,189 veces)
bomba1990


Desconectado Desconectado

Mensajes: 383



Ver Perfil WWW
porque al compilar pesa tanto un programa?
« en: 28 Noviembre 2010, 20:05 »

hola a todos, hace poco me puse a estudiar c++ y pues comense con dev-c++ gracias a unos post que lei me cambie a codeblock, hice un programa sencillo que no pasa de 100 lineas pero a la hora ce compilar veo que pesa 978 kb y si modifico para que salga el release que dice codeblocks pesa 478kb pero eso me parece una exageracion cuando antes no pasarian de 50kb.

me imagino que algo estoy haciendo mal, pero que?

bueno como informacion adicional a ver si me pueden ayudar les digo que lo estoy compiladon con mingw el que trae incorporado codeblocks.


En línea

"Cuando le di de comer a los pobres me llamaron santo, pero cuando pregunte porque los pobres eran pobres me dijeron comunista"

http://sosinformatico.blogspot.com/
http://www.publisnet.com.ve
APOKLIPTICO


Desconectado Desconectado

Mensajes: 3.781


Toys in the attic.


Ver Perfil
Re: porque al compilar pesa tanto un programa?
« Respuesta #1 en: 28 Noviembre 2010, 20:39 »

Estas usando mucho stack?
Es decir, estas declarando arrays muy grandes estáticamente?


En línea

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
bomba1990


Desconectado Desconectado

Mensajes: 383



Ver Perfil WWW
Re: porque al compilar pesa tanto un programa?
« Respuesta #2 en: 28 Noviembre 2010, 21:26 »

bueno eso podria ser, pero creo que en un programa como este

Código
#include <iostream>
 
using namespace std;
 
int main()
{
   cout << "Hello world!" << endl;
   return 0;
}

no es mucha la memoria que se necesita. y pesa casi lo mismo.
En línea

"Cuando le di de comer a los pobres me llamaron santo, pero cuando pregunte porque los pobres eran pobres me dijeron comunista"

http://sosinformatico.blogspot.com/
http://www.publisnet.com.ve
piou

Desconectado Desconectado

Mensajes: 25


Ver Perfil
Re: porque al compilar pesa tanto un programa?
« Respuesta #3 en: 28 Noviembre 2010, 21:58 »

A mi no me gusta mucho lo de cout, cin y endl, pero compilando esto:

Código:
#include <stdio.h>
using namespace std;
 
int main()
{
    printf("Hello World\n");
    return 0;
}

Con el g++ en linux, si le hago un ls me da:

Código:
-rwxr-xr-x 1 fer fer 7264 2010-11-28 21:56 a.out
Solo 7 KBytes. Mira a ver cambiando las funciones si te pesa menos.
En línea

CrisQC

Desconectado Desconectado

Mensajes: 170



Ver Perfil WWW
Re: porque al compilar pesa tanto un programa?
« Respuesta #4 en: 28 Noviembre 2010, 22:20 »

Un código tan chico te tiene que ocupar menos de 10kb.
Yo no uso ningún IDE, compilo directamente por consola.
Los IDEs te agregan extras para depurarlo.
Intenta compilarlo en limpio directo por consola.
En línea

- ODIO LA LIBRERÍA CONIO
- ODIO .NET
- ODIO los archivos comprimidos con contraseña.
- ODIO las páginas con flash
- ODIO el Deep Freeze
APOKLIPTICO


Desconectado Desconectado

Mensajes: 3.781


Toys in the attic.


Ver Perfil
Re: porque al compilar pesa tanto un programa?
« Respuesta #5 en: 28 Noviembre 2010, 22:37 »

No es demasiado problema que el ejecutable sea grande, aparte, siempre podés utilizar UPX para comprimirlo.
En línea

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
bomba1990


Desconectado Desconectado

Mensajes: 383



Ver Perfil WWW
Re: porque al compilar pesa tanto un programa?
« Respuesta #6 en: 29 Noviembre 2010, 01:02 »

bueno puse ese script porque es el que viene de ejemplo en el codeblocks.  y de verdad lo pongo no porque 978 kb pese mucho(ya no se usan los dikettes) sino porque me parece execisivo comparado cuando compilaba en dev-c++ que no pasaba de 20kb

que compilador ustedes me recomeindan?
« Última modificación: 29 Noviembre 2010, 01:06 por bomba1990 » En línea

"Cuando le di de comer a los pobres me llamaron santo, pero cuando pregunte porque los pobres eran pobres me dijeron comunista"

http://sosinformatico.blogspot.com/
http://www.publisnet.com.ve
pucheto

Desconectado Desconectado

Mensajes: 214


Ver Perfil
Re: porque al compilar pesa tanto un programa?
« Respuesta #7 en: 29 Noviembre 2010, 02:20 »

No tiene nada que ver el IDE que uses para compilar, si tiene que ver el compilador y las opciones que se le pasan a este. Por ejemplo, si lo vas a compilar con informacion de debugging, que tipo de optimizacion usas para compilarlo, si habilitas o no el manejo de excepciones, si alineas o no el codigo, etc..
En línea
APOKLIPTICO


Desconectado Desconectado

Mensajes: 3.781


Toys in the attic.


Ver Perfil
Re: porque al compilar pesa tanto un programa?
« Respuesta #8 en: 29 Noviembre 2010, 02:32 »

Que version de GCC tenés que opciones le pasas? Estas linkeando algun objeto de más?
En línea

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
bomba1990


Desconectado Desconectado

Mensajes: 383



Ver Perfil WWW
Re: porque al compilar pesa tanto un programa?
« Respuesta #9 en: 29 Noviembre 2010, 04:04 »

yo lo instale y empese a usarlo como vino. no le e echo muchas modificaciones.

y no seeeeeeeeeeeeeeee, esta vaina me enredo, porque en los comandos no aparece nada. hay solo dos en el de debug que aparece -q.
y en release que no tiene el -q ese y ponen -o2 optimize even more(for speed)  y -s (strip al symbol for binaries).

En línea

"Cuando le di de comer a los pobres me llamaron santo, pero cuando pregunte porque los pobres eran pobres me dijeron comunista"

http://sosinformatico.blogspot.com/
http://www.publisnet.com.ve
Karman


Desconectado Desconectado

Mensajes: 657



Ver Perfil WWW
Re: porque al compilar pesa tanto un programa?
« Respuesta #10 en: 29 Noviembre 2010, 06:45 »

es por una característica de gcc cuando se utilizan las STL, y es debido a que en este compilador el código del la STL es embebido en el ejecutable final (lo cual no pasa con visual c++ debido a que dichas funcionalidades están en una dll externa), pero no te tiene que importar eso, dado que, al fin y al cabo, ambos pesan lo mismo en memoria (con gcc es un solo módulo, con visual c, son 2 o más)

cita de la página compilador mingw:

Citar
C++ programs using the Standard Template Library (ie/ #include <iostream>) cause a large part of the library to be statically linked into the binary. The need to statically link the stdc++ into the binary is two fold. First MSVCRT.dll does not contain C++ stdlib constructs. Second the legal implications of generating a libstdc++.dll are restricted by the licensing associated with the library. If you wish to keep your file size down use strip to remove debugging information and other verbatim found in the binary.

S2
En línea

bomba1990


Desconectado Desconectado

Mensajes: 383



Ver Perfil WWW
Re: porque al compilar pesa tanto un programa?
« Respuesta #11 en: 29 Noviembre 2010, 17:04 »

ahhhhhhh, gracias. voy a averiguar porque debe haber una forma de que no lo linkee porque en el futuro tengo ganas de hacer un troyano cuando aprenda mas c++ y me gustaria que fuera mas liviano. pero de todas maneras muchaaas gracias a todos porque ahora entiendo cual es el problema.

aqui cinsegui esta pagina que lo explica muy bien:

http://www.zator.com/Cpp/E1_4_6.htm
« Última modificación: 29 Noviembre 2010, 17:14 por bomba1990 » En línea

"Cuando le di de comer a los pobres me llamaron santo, pero cuando pregunte porque los pobres eran pobres me dijeron comunista"

http://sosinformatico.blogspot.com/
http://www.publisnet.com.ve
APOKLIPTICO


Desconectado Desconectado

Mensajes: 3.781


Toys in the attic.


Ver Perfil
Re: porque al compilar pesa tanto un programa?
« Respuesta #12 en: 29 Noviembre 2010, 17:55 »

Ponele las optimizaciones, es raro, porque estoy compilando un programa que linkea un monton de libs, y me pesa 88 k y en debug.
En el modo debug tengo puesta solo la opción x defecto "produce debugging symbols".

En el release, me pesa menos de la mitad.
Tengo puestas las opciones "strip symbols" y "optimize even more".
En línea

AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.
bomba1990


Desconectado Desconectado

Mensajes: 383



Ver Perfil WWW
Re: porque al compilar pesa tanto un programa?
« Respuesta #13 en: 29 Noviembre 2010, 19:22 »

ya lei bien, lo que pasa es que al linkear iostream el compilador linkea el objeto completo, es decir linkea la libreria estandar completa, en cambio si uso stdio.h el programa no pasa de 25kb.

Citar
Why is the compiled executable file so large?

People usually ask this question when they compile a simple program which uses iostreams. The first thing you can do is to add -s to Project Options - Parameters - Linker, but the result may be still too large for your taste. In this case, either try to live with it (it actually doesn't matter so much!), or avoid iostreams (use cstdio), or use another compiler. Also note that there are some exe compressors on the net, e.g. upx.

The reason why iostream increases the size so much is that the linker links entire object files (from inside of libraries) if they contain at least one necessary reference, and the library for iostream is not well separated into small object files. Also, the linker should be able to link only certain sections of the object files (see "--gc-sections"), but this particular feature doesn't work yet on the mingw target (and that affects all libraries and object files).

Tomado de:  Adrian Sandor www14.brinkster.com
« Última modificación: 29 Noviembre 2010, 19:24 por bomba1990 » En línea

"Cuando le di de comer a los pobres me llamaron santo, pero cuando pregunte porque los pobres eran pobres me dijeron comunista"

http://sosinformatico.blogspot.com/
http://www.publisnet.com.ve
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Porque atacan tanto a linux?
GNU/Linux
magnox 1 390 Último mensaje 19 Noviembre 2004, 15:55
por Libransser
porque demora tanto en cargar mi web???
Desarrollo Web
SERBice 7 1,456 Último mensaje 1 Diciembre 2004, 18:42
por PhenfiX
Porque se peta tanto el p*** Movie Maker
Software
Jericho 5 1,381 Último mensaje 25 Mayo 2005, 16:45
por ....Gusto....
Porque tanto puertos abierto????
Seguridad
mbc 8 891 Último mensaje 23 Septiembre 2007, 16:02
por mbc
PORque tengo tanto PING y mi internet tan lentoooo ><
Hacking Wireless
tomeu00 7 3,403 Último mensaje 12 Noviembre 2008, 12:56
por tomeu00
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines