Recent

Author Topic: ¿Porque las compilaciones con Lazarus pesan más de 1MB?  (Read 2176 times)

Metro!

  • Newbie
  • Posts: 5
¿Porque las compilaciones con Lazarus pesan más de 1MB?
« on: April 05, 2021, 10:08:56 pm »
Cuando hago programas en Lazarus, los compilo... y el .exe pesa más de 1MB
Antes pesaban 20MB, pero cuando supe como sacar la información de depuración ahi ya pesaban 1MB

El tema es que en Delphi 7 las compilaciones pesan 400KB, es mucho menos que en Lazarus. Quería saber como hacer que lazarus los haga a 400KB como en Delphi 7.

lucamar

  • Hero Member
  • *****
  • Posts: 4219
Re: ¿Porque las compilaciones con Lazarus pesan más de 1MB?
« Reply #1 on: April 05, 2021, 11:03:23 pm »
No sé exactamente por qué pero el tamaño mínimo de un programa con LCL (una aplicación gŕafica) es siempre ese: entre uno y tres megas, dependiendo del sistema operativo, el "widgetset", etc. aunque luego el crecimiento posterior, a medida que vas añadiendo controles, etc, suele ser bastante lento.

Supongo que tendrá algo que ver con la cantidad mínima de código que es necesario incluir desde las unidades de la LCL: inicializaciones, finalizaciones, etc.
Turbo Pascal 3 CP/M - Amstrad PCW 8256 (512 KB !!!) :P
Lazarus/FPC 2.0.8/3.0.4 & 2.0.12/3.2.0 - 32/64 bits on:
(K|L|X)Ubuntu 12..18, Windows XP, 7, 10 and various DOSes.

lainz

  • Hero Member
  • *****
  • Posts: 4460
    • https://lainz.github.io/
Re: ¿Porque las compilaciones con Lazarus pesan más de 1MB?
« Reply #2 on: April 06, 2021, 05:06:56 am »
Proba sacando el icono del exe a ver cuanto pesa.
Saca unidades aunque creo que algunas sacarlas no va a hacer nada.

Ñuño_Martínez

  • Hero Member
  • *****
  • Posts: 1186
    • Burdjia
Re: ¿Porque las compilaciones con Lazarus pesan más de 1MB?
« Reply #3 on: April 06, 2021, 12:04:23 pm »
Aparte de lo que te han comentado, echa un vistazo a las opciones de compilación.  Más concretamente:
  • en Compilación y enlazado selecciona 2 (-O1 + quick optimizations) (-O2) o 3 (-O2 + slow optimizations) (-O3) y asegúrate de que están activadas las opciones Enlazado inteligente (-Cx) y Enlazado inteligente (-XX).  La opción Más pequeño en lugar de más rápido (-Os) actívala sólo si no te importa la velocidad.
  • en Depurando desactiva todas las opciones, pero activa Eliminar símbolos del ejecutable (-Xs); que quede esa opción sola activada.
  • opcionalmente, en Configuración y objetivo puedes probar a seleccionar los tres campos de Plataforma objetivo, aunque tienes que saber qué seleccionas y por qué, ya que limitará las plataformas en las que podrás ejecutar el programa (y no siempre afecta positivamente al tamaño pero puede ayudar en la optimización).

Y para compilar, selecciona Ejecutar > Limpiar y Construir... y pulsa el botón Limpiar y construir (no hace falta que cambies nada).

Con estas opciones he conseguido reducir mucho el tamaño de los ejecutables, y en programas no muy complejos (un par de formularios con un puñado de controles cada uno y algún que otro diálogo como el de selección de archivos) mi ejecutable ha sido de menos de 1MiB.

De todas formas, he podido comprobar empíricamente que los ejecutables que genera Lazarus necesitan muchísima menos RAM que los generados por Visual Studio (al menos los de VisualBasic.Net).  Hice exactamente el mismo programa, con los mismos componentes y algoritmos exactos, tanto en Pascal como en VisualBasic, compilados con opciones equivalentes y los de VB ocupaban más de el doble de RAM en la mayoría de casos, y siempre varios megas más (sí, megas).
« Last Edit: April 06, 2021, 12:06:16 pm by Ñuño_Martínez »
Are you interested in game programming? Join the Pascal Game Development community!
Also visit the Game Development Portal

GAN

  • Sr. Member
  • ****
  • Posts: 370
Re: ¿Porque las compilaciones con Lazarus pesan más de 1MB?
« Reply #4 on: April 06, 2021, 10:51:48 pm »
Otra opción: strip. Lo uso siempre desde hace años, me reduce de aprox. 40 Mb a 6 y modenas. Proyectos con varias unidades y formularios.
Lazarus 2.0.8 FPC 3.0.4 Linux Mint Mate 19.3
Zeos 7̶.̶2̶.̶6̶ 7.1.3a-stable - Sqlite 3.32.3 - LazReport

Seenkao

  • Hero Member
  • *****
  • Posts: 546
    • New ZenGL.
Re: ¿Porque las compilaciones con Lazarus pesan más de 1MB?
« Reply #5 on: April 06, 2021, 11:54:06 pm »
Если использовать LCL - то практически ни как.

Есть вариант создавать окна вручную, за счёт API системы.

Если нужна визуальная разработка, то от LCL не уйти. Если не обязательна визуальная часть, то создаём окно сами.

Google translate:
Si usa LCL, entonces prácticamente nada.

Existe una opción para crear ventanas manualmente, utilizando la API del sistema.

Si necesita desarrollo visual, no puede dejar LCL. Si la parte visual no es necesaria, creamos la ventana nosotros mismos.
Rus: Стремлюсь к созданию минимальных и достаточно быстрых приложений.

Eng: I strive to create applications that are minimal and reasonably fast.
Working on ZenGL

Ñuño_Martínez

  • Hero Member
  • *****
  • Posts: 1186
    • Burdjia
Re: ¿Porque las compilaciones con Lazarus pesan más de 1MB?
« Reply #6 on: April 07, 2021, 11:45:21 am »
Cierto, como dice Seenkao, crear el entorno gráfico de tu programa "a mano" usa bastantes menos memoria y espacio en disco que usando el diseñador de Lazarus, y todo lo que puedes hacer usando el diseñador puede hacerse con código.
Are you interested in game programming? Join the Pascal Game Development community!
Also visit the Game Development Portal

daragor

  • Jr. Member
  • **
  • Posts: 66
    • Blog Webscom
Re: ¿Porque las compilaciones con Lazarus pesan más de 1MB?
« Reply #7 on: April 07, 2021, 03:06:52 pm »
A este tema lo vi hace mucho tiempo cuando comencé con lazarus, porque hacia un aplicativo infimo de una pantalla, con un par de controles y el exe pesaba 16mb...

Con todo lo q dijeron, sobre todo el tema del strip.exe he creado una herramienta para depurar el archivo, una vez compilado el exe, lo seleccionas y te lo reduce, usando strip y upx (herramienta extra de terceros), está disponible de gratis en mi web, es más lo hice para la comunidad de lazarus, así que bueno les dejo el enlace, para mas info y descarga
Inculcando el software libre.
https://www.webscom.com.ar

lucamar

  • Hero Member
  • *****
  • Posts: 4219
Re: ¿Porque las compilaciones con Lazarus pesan más de 1MB?
« Reply #8 on: April 07, 2021, 03:27:53 pm »
[...] usando strip y upx [...]

Usar strip está bien, aunque estrictamente hablando no debería hacer falta: seleccionando "Eliminar símbolos del ejecutable (-Xs)" en la sección "Opciones del compilador->Depurando" de las "Opciones del Proyecto" debería bastar.

Con upx la cosa es un poco más complicada; muchos (por no decir todos) antivirus, anti-malware, etc. marcarán la aplicación como "peligrosa" sólo por este motivo y por una buena razón: comprimir el ejecutable evita que este tipo de aplicaciones lo examinen antes de ejecutarlo. Además, se aumenta el tiempod de carga y, en última instancia, el programa descomprimido al ejecutarse termina siendo igual de grande que al principio así que no ahorras nada.

Los programas como UPX  están pensados básicamente para disminuir el tamaño de distribución (para bajarse un programa más rápido) y el de almacenaje (que ocupe menos en disco). Con las capacidades tanto de red como de almacenaje de hoy en día resultan un poco superfluos.
Turbo Pascal 3 CP/M - Amstrad PCW 8256 (512 KB !!!) :P
Lazarus/FPC 2.0.8/3.0.4 & 2.0.12/3.2.0 - 32/64 bits on:
(K|L|X)Ubuntu 12..18, Windows XP, 7, 10 and various DOSes.

daragor

  • Jr. Member
  • **
  • Posts: 66
    • Blog Webscom
Re: ¿Porque las compilaciones con Lazarus pesan más de 1MB?
« Reply #9 on: April 07, 2021, 03:41:19 pm »
Probaste el aplicativo ? no hable de comprimir nada con upx... si ya hiciste todas las pruebas q dices ok  pero NO entiendo que tiene q ver lo del antivirus y lo de comprimir y decomprimir, ahora hacer un aplicativo aparte de las configuraciones en el IDE, tiene un sentido, y por otro lado les dejo un ejemplo:

El exe del programa compilado es de 2.2mb y una vez q lo ejecuto con el aplicativo queda en 0.8mb...

Por lo pronto, no entiendo tu participación en este tema creo q es totalmente contraproducente, tiras teorías pero no soluciones a algo q llama la atención y es interesante saber manejar.
« Last Edit: April 07, 2021, 03:44:59 pm by daragor »
Inculcando el software libre.
https://www.webscom.com.ar

lucamar

  • Hero Member
  • *****
  • Posts: 4219
Re: ¿Porque las compilaciones con Lazarus pesan más de 1MB?
« Reply #10 on: April 07, 2021, 03:47:36 pm »
Tu programa usa strip y upx para reducir el tamaño del ejecutable ¿no? UPX es un compresor, como zip, 7z, rar, etc. sólo que produce un ejecutable que descomprime el programa "on the fly" al ejecutarlo. A eso es a lo que me refiero.
Turbo Pascal 3 CP/M - Amstrad PCW 8256 (512 KB !!!) :P
Lazarus/FPC 2.0.8/3.0.4 & 2.0.12/3.2.0 - 32/64 bits on:
(K|L|X)Ubuntu 12..18, Windows XP, 7, 10 and various DOSes.

daragor

  • Jr. Member
  • **
  • Posts: 66
    • Blog Webscom
Re: ¿Porque las compilaciones con Lazarus pesan más de 1MB?
« Reply #11 on: April 07, 2021, 03:48:41 pm »
Dejo el reporte de virutotal... ya dependera de cada uno usarlo, es un archivo limpio

https://www.virustotal.com/gui/file/d634cde09d1aa1320a1d4c589d35d306f8350129faf225b2bca394128c2c4442/detection
« Last Edit: April 07, 2021, 03:58:15 pm by daragor »
Inculcando el software libre.
https://www.webscom.com.ar

daragor

  • Jr. Member
  • **
  • Posts: 66
    • Blog Webscom
Re: ¿Porque las compilaciones con Lazarus pesan más de 1MB?
« Reply #12 on: April 07, 2021, 03:52:41 pm »
Tu programa usa strip y upx para reducir el tamaño del ejecutable ¿no? UPX es un compresor, como zip, 7z, rar, etc. sólo que produce un ejecutable que descomprime el programa "on the fly" al ejecutarlo. A eso es a lo que me refiero.

Es obvio lo que dices, pero tu referencia no fue esa, dijiste "Además, se aumenta el tiempod de carga y, en última instancia, el programa descomprimido al ejecutarse termina siendo igual de grande que al principio así que no ahorras nada."

En ambos casos, tanto en el tema antivirus (dijiste por no decir todos) y en el tema tamaño del exe, estas errado.
Inculcando el software libre.
https://www.webscom.com.ar

lucamar

  • Hero Member
  • *****
  • Posts: 4219
Re: ¿Porque las compilaciones con Lazarus pesan más de 1MB?
« Reply #13 on: April 07, 2021, 06:48:44 pm »
Es obvio lo que dices, pero tu referencia no fue esa, dijiste "Además, se aumenta el tiempod de carga y, en última instancia, el programa descomprimido al ejecutarse termina siendo igual de grande que al principio así que no ahorras nada."

Cuando cargas un programa comprimido con UPX, lo primero que se ejecuta es la parte que descomprime el resto, lo que obviamente provoca que tu programa tarde más en empezar a ejecutarse y, dado que se descomprime, mida en memoria exactamente lo mismo que antes de comprimirlo más lo que ocupe el cargador.

Quote
En ambos casos, tanto en el tema antivirus (dijiste por no decir todos) y en el tema tamaño del exe, estas errado.

Acerca de lo del antivirus, me remito a las pruebas: busca en este foro y por toda Internet a ver qué problemas causan compresores como este. Date cuenta que no estoy hablando de UPX.EXE per se, sino de cualquier otro programa comprimido con él.

Puedes empezar por la seccion UPX de la página Size Matters del wiki.

En cuanto al tamaño del exe, me reafirmo en lo dicho:
Los programas como UPX  están pensados básicamente para disminuir el tamaño de distribución (para bajarse un programa más rápido) y el de almacenaje (que ocupe menos en disco). Con las capacidades tanto de red como de almacenaje de hoy en día resultan un poco superfluos.
O sea, que sí, el fichero del ejecutable es más pequeño: para eso es para lo que sirve y nada más que para eso.

¿Que vale la pena vistos los inconvenientes? Bueno, puede; pero no entro en eso: me limito a explicar los citados inconvenientes para que se tengan en cuenta.
« Last Edit: April 07, 2021, 06:53:22 pm by lucamar »
Turbo Pascal 3 CP/M - Amstrad PCW 8256 (512 KB !!!) :P
Lazarus/FPC 2.0.8/3.0.4 & 2.0.12/3.2.0 - 32/64 bits on:
(K|L|X)Ubuntu 12..18, Windows XP, 7, 10 and various DOSes.

 

TinyPortal © 2005-2018