• Sábado 14 de Diciembre de 2024, 17:29

Autor Tema:  Potencia De Vc++  (Leído 2229 veces)

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Potencia De Vc++
« en: Miércoles 19 de Abril de 2006, 16:53 »
0
En otro foro alguien dijo que Pascal (Delphi) generaba ejecutables mucho mas pequeños y rapidos que VC++. Espero que esto lo contradiga:

simple.cpp:
Código: Text
  1.  
  2. #include <windows.h>
  3.  
  4. #define mainDlg 101
  5. #define okButton 500
  6. HWND mainDlgHandle;
  7.  
  8. int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
  9.  
  10. int RealEntry()
  11. {
  12.   return WinMain(GetModuleHandle(0), 0, 0, 0);
  13. }
  14.  
  15. INT_PTR CALLBACK mainDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
  16. {
  17.   HICON mainIcon = 0;
  18.   switch (uMsg)
  19.   {
  20.     case WM_CLOSE:
  21.       EndDialog(hwndDlg, wParam);
  22.     return TRUE;
  23.  
  24.     case WM_INITDIALOG:
  25.       mainDlgHandle = hwndDlg;
  26.       mainIcon = LoadIcon(GetModuleHandle(0), MAKEINTRESOURCE(101));
  27.       SetClassLong(mainDlgHandle, GCL_HICON, (LONG)mainIcon);
  28.       DestroyIcon(mainIcon);
  29.     break;
  30.  
  31.     case WM_COMMAND:
  32.       switch (LOWORD(wParam))
  33.       {
  34.         case okButton:
  35.           SendMessage(hwndDlg, WM_CLOSE, 0, 0);
  36.         break;
  37.       }
  38.     break;
  39.   }
  40.   return 0;
  41. }
  42.  
  43. int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
  44. {
  45.   DialogBox(hInstance, MAKEINTRESOURCE(mainDlg), 0, mainDlgProc);
  46. }
  47.  
  48.  

El script de recursos, about.rc:

Código: Text
  1.  
  2. #include <windows.h>
  3.  
  4. 101 DIALOGEX 0, 0, 229, 50
  5. STYLE DS_FIXEDSYS | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
  6. CAPTION "About ..."
  7. LANGUAGE LANG_SPANISH, 0x1
  8. FONT 8, "MS SHELL DLG", 0, 0, 1
  9. {
  10.    CONTROL "Programa de ejemplo v0.1", 0, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 7, 12, 91, 11
  11.    CONTROL "Aceptar", 500, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 157, 7, 60, 14
  12. }
  13.  
  14. 101 ICON MAINICON.ico
  15.  
  16.  

Si ponemos un icono de 1024 bytes obtenemos con estas lineas un ejecutable de 3072 bytes:
rc about.rc
cl /c simple.cpp
link simple.obj /NODEFAULTLIB user32.lib kernel32.lib /entry:RealEntry about.res /merge:.rdata=.text
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Potencia De Vc++
« Respuesta #1 en: Miércoles 19 de Abril de 2006, 17:02 »
0
Un hello world de consola de 1024 bytes:

Código: Text
  1.  
  2. #include <windows.h>
  3.  
  4. size_t strlen(char *cadena)
  5. {
  6.   char *ptr = cadena;
  7.   while(*ptr++);
  8.   return ptr - cadena;
  9. }
  10.  
  11. void main()
  12. {
  13.   HANDLE stdout = GetStdHandle(STD_OUTPUT_HANDLE);
  14.   char holas[] = "hola mundo";
  15.   DWORD written = 0;
  16.   WriteFile(stdout, holas, strlen(holas), &written, 0);
  17. }
  18.  
  19.  

cl /c hello_std.cpp
link link hello_std.obj /NODEFAULTLIB /entry:main /merge:.rdata=.text kernel32.lib

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Potencia De Vc++
« Respuesta #2 en: Miércoles 19 de Abril de 2006, 17:02 »
0
Un "hello world" de Windows, 1024 bytes tambien:

Código: Text
  1.  
  2. extern "C" __stdcall MessageBoxA(unsigned int, char*, char*, unsigned
  3.  
  4. int);
  5.  
  6. void main()
  7. {
  8.   MessageBoxA(0, "HOLA", "DESDE C", 0);
  9. }
  10.  
  11.  

cl /c thola.cpp
link thola.obj /NODEFAULTLIB /entry:main /merge:.data=.text /merge:.rdata=.text /subsystem:windows user32.lib
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Potencia De Vc++
« Respuesta #3 en: Miércoles 19 de Abril de 2006, 17:08 »
0
Citar
En otro foro alguien dijo que Pascal (Delphi) generaba ejecutables mucho mas pequeños y rapidos que VC++.

Pero en todo caso se supone que el tamaño y velocidad del codigo de maquina generado depende del compilador y de la manera en que este se use y no del lenguaje propiamente, sobre todo con programas sencillos en el nivel que has mostrado no?
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Potencia De Vc++
« Respuesta #4 en: Miércoles 19 de Abril de 2006, 17:10 »
0
Cita de: "JuanK"
Citar
En otro foro alguien dijo que Pascal (Delphi) generaba ejecutables mucho mas pequeños y rapidos que VC++.

Pero en todo caso se supone que el tamaño y velocidad del codigo de maquina generado depende del compilador y de la manera en que este se use y no del lenguaje propiamente, sobre todo con programas sencillos en el nivel que has mostrado no?
Delphi es un compilador especifico y VC++ otro. Por supuesto que la capacidad del programador para usar sus herramientas tiene tambien que ver.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Potencia De Vc++
« Respuesta #5 en: Miércoles 19 de Abril de 2006, 18:02 »
0
:blink: Es cierto no lei bien la pregunta, y respecto a delphi no sabia que era comlpilador, crei que era o tra forma de referirce a object pascal.

thanks  :o
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Potencia De Vc++
« Respuesta #6 en: Miércoles 19 de Abril de 2006, 18:18 »
0
Cita de: "JuanK"
:blink: Es cierto no lei bien la pregunta, y respecto a delphi no sabia que era comlpilador, crei que era o tra forma de referirce a object pascal.

thanks  :o
Delphi es, efectivamente, el lenguaje que antes se llamaba Object Pascal pero tambien es el compilador que vende Borland, como el de C++ que vende Microsoft es el VC++.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

x.cyclop

  • Miembro de PLATA
  • *****
  • Mensajes: 1039
  • Nacionalidad: mx
    • Ver Perfil
Re: Potencia De Vc++
« Respuesta #7 en: Viernes 21 de Abril de 2006, 04:17 »
0
No entiendo. ¿Qué tiene que ver Delphi? El Dev-C++ está hecho en Delphi, pero eso no importa, es simplemente el IDE, el trabajo grande lo hace el compilador, MinGw.  :blink:  :unsure:

- Great works aren't produced on the first try. [Ernest Hemingway]
- Be ambitious, yet realistic in your dreams. Do something that makes a positive impact. Don’t let the nay-sayers get you down. [Bjarne Stroustrup]

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Potencia De Vc++
« Respuesta #8 en: Viernes 21 de Abril de 2006, 04:59 »
0
Cita de: "X.Cyclop"
No entiendo. ¿Qué tiene que ver Delphi? El Dev-C++ está hecho en Delphi, pero eso no importa, es simplemente el IDE, el trabajo grande lo hace el compilador, MinGw.  :blink:  :unsure:
El tema empezó por una comparación del tamaño de ejecutables generados por Delphi contra los generados con VC++.

No he usado Delphi lo suficiente, pero la única prueba de tamaño que hice fué generar un proyecto vacío y crear el ejecutable, por supuesto que salía más grande pues no configuré ninguna opción para optimizarlo :P.

Saludos,
José Jorge (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Potencia De Vc++
« Respuesta #9 en: Viernes 21 de Abril de 2006, 10:04 »
0
Cita de: "X.Cyclop"
No entiendo. ¿Qué tiene que ver Delphi? El Dev-C++ está hecho en Delphi, pero eso no importa, es simplemente el IDE, el trabajo grande lo hace el compilador, MinGw.  :blink:  :unsure:
Es exactamente lo que te dijo Geo. Mas que nada lo que queria hacer es DESMENTIR categoricamente que Delphi pudiera generar ejecutables mas chicos que VC++.

En la discucion en cuestion el siniestro personaje afirmo esto basandose en un hello world y yo entonces opte por, evidentemente usando las facilidades de VC++, generar un hello world de 1024 bytes. Como me supuse no logro generar nada ni remotamente tan chico con Delphi. Yo no digo que no se pueda, tal vez pueda igualarlo, lo que sostengo es que su afirmacion de que VC++ genera ejecutables de mayor tamaño (e inficientes dice, juaz) que Delphi es totalmente falsa. El problema lo tiene el por ser incapaz de sacarle todo el provecho posible a una herramienta tan versatil, flexible y potente como VC++.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

x.cyclop

  • Miembro de PLATA
  • *****
  • Mensajes: 1039
  • Nacionalidad: mx
    • Ver Perfil
Re: Potencia De Vc++
« Respuesta #10 en: Viernes 21 de Abril de 2006, 18:24 »
0
Ah, ahora sí. Gracias. :kicking:

- Great works aren't produced on the first try. [Ernest Hemingway]
- Be ambitious, yet realistic in your dreams. Do something that makes a positive impact. Don’t let the nay-sayers get you down. [Bjarne Stroustrup]