¿Qué hace que los EXE crezcan de tamaño?
Bibliotecas externas, especialmente bibliotecas estáticas e información de depuración, tamaño total de su código, biblioteca de tiempo de ejecución. Más código, más bibliotecas == exe más grande
Para reducir el tamaño de exe, debe procesar exe con la utilidad gnu strip, deshacerse de todas las bibliotecas estáticas, deshacerse de las bibliotecas de tiempo de ejecución de C/C++, deshabilitar todas las comprobaciones de tiempo de ejecución y activar las optimizaciones del tamaño del compilador. Trabajar sin CRT es un dolor, pero es posible. También hay una biblioteca wcrt (alternativa C tiempo de ejecución) creada para hacer pequeñas aplicaciones (por cierto, no se ha actualizado/mantenido durante los últimos 5 años).
El exe más pequeño que he podido crear con el compilador msvc está en algún lugar alrededor de 16 kilobytes. Esta era una aplicación de Windows que mostraba una sola ventana y requería msvcrt.dll para ejecutarse. Lo modifiqué un poco, y lo convertí en una broma práctica que elimina la imagen en el monitor.
Para obtener impresionantes técnicas de reducción de tamaño de exe, es posible que desee consultar .kkrieger. Es un shooter 3D en primera persona, con un total de 96 kilobytes. El juego tiene un nivel grande y detallado, admite sombreadores, sombras en tiempo real, etc. comparable con Saurbraten (ver screenshots). La aplicación de Windows más pequeña (demostración en 3D con música) que encontré fue de 4 kilobytes, y usé técnicas de compresión y (probablemente) funciones no documentadas (es decir, el hecho de que * .com executbale pudiera descomprimir y ejecutar Win32.exe en Windows XP).
En la mayoría de los casos, el tamaño de * .exe en realidad no debería molestarlo (no he visto un disquete durante algunos años), siempre que sea razonable (menos de 100 megabytes). Por ejemplo, de tamaño de archivo "irrazonable", vea la construcción de depuración de Qt 4 para mingw.
Esto dio como resultado la eliminación de casi 1/3 de mis líneas de código y aún así mi exe sigue siendo de 364KB.
más probable es que es causada por las bibliotecas externos utilizados por compilador, cheques de tiempo de ejecución, etc. Además, esta es una operación de asignación. Si no está utilizando tipos personalizados para x (con el constructor de copias), es muy probable que la operación de "copiar" resulte en un número pequeño de operaciones, es decir, eliminar 1/3 de líneas no garantiza que su código sea 1/3. corta.
Si desea ver cuánto impacto tuvo su modificación, podría "pedir" al compilador que produzca una lista de asm para ambas versiones del programa y luego comparar los resultados (manualmente o con diff). O puede desasar/comparar ambas versiones de ejecutable. BUt estoy seguro de que usar GNU strip o eliminar bibliotecas adicionales tendrá más efecto que eliminar operadores de asignación.
¿Por qué sería menos? 'point = point2' está haciendo exactamente el mismo trabajo que antes (dentro del operador), solo con una interfaz diferente. – GManNickG
@GMan: es por eso que está haciendo esta pregunta ... tal vez él cree que el exe creció en tamaño según las líneas de código. –
Voy a votar esto simplemente por el hecho de que esta es una muy buena pregunta que mucha gente pregunta cuando comienza su programación. –