Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ¿Por qué los programas en Delphi pesan tanto? (https://www.clubdelphi.com/foros/showthread.php?t=90549)

damianccs 07-07-2016 20:13:55

¿Por qué los programas en Delphi pesan tanto?
 
Hice un programa de 'hola mundo' en Delphi consola y pesa 1.163 KB, en Visual BASIC el hola mundo no pesa tanto. Eso me pasa en la versión de prueba de Delphi Berlin y en Lazarus. No sé si las aplicaciones visuales pesen así con Delphi. Saludos

mamcx 07-07-2016 21:02:19

1.163 KB no es "pesar mucho".

La diferencia entre lenguajes esta en cuanto del codigo referencia dinamicamente y cuanto estaticamente. VB no "pesa" tanto porque depende de un runtime/librerias (.net) que es donde esta el "peso". Delphi por el contrario, incorpora el "runtime/librerias" estaticamente y por eso parece mas pesado.

damianccs 07-07-2016 21:15:06

Cita:

Empezado por mamcx (Mensaje 506796)
1.163 KB no es "pesar mucho".

La diferencia entre lenguajes esta en cuanto del codigo referencia dinamicamente y cuanto estaticamente. VB no "pesa" tanto porque depende de un runtime/librerias (.net) que es donde esta el "peso". Delphi por el contrario, incorpora el "runtime/librerias" estaticamente y por eso parece mas pesado.

Gracias, el peso de las aplicaciones es una de las características que estoy evaluando para elegir un nuevo lenguaje de programación. Si es así como dices entonces Delphi me sigue pareciendo el mejor. Saludos

rocksoft 07-07-2016 21:21:27

Buenas,

otro factor importante es envia ese ejecutable a alguien y funcionara, el de VB sino tiene todas las librerias que requiere no se podra ejecutar.

Reasen 07-07-2016 23:51:31

Cita:

Empezado por damianccs (Mensaje 506797)
Gracias, el peso de las aplicaciones es una de las características que estoy evaluando para elegir un nuevo lenguaje de programación. Si es así como dices entonces Delphi me sigue pareciendo el mejor. Saludos

Eso tiene muchas ventajas, una de ellas: no te tienes que estar preocupando tanto de las dependencias o librerías como suele pasar en el resto de lenguajes, queda todo mas compacto y cómodo :D, tienes a piñón de controles que tampoco requieren de librerías externas.

darkbits 08-07-2016 01:58:44

DX10.1 Berlin automáticamente adjunta skin Win10 o el Sistema operativo que estas utilizando por ello pesa así su ejecutable.
prueba en diferentes SO veras q se adapta a cada uno. en visualbasic si no lo colocas un skin la aplicación parece windows 98
yo tengo una aplicación DX10.1 que lo compila en 37Mb y utilizo compresor upx y lo comprime a 3.5Mb una belleza, y lo mejor el ejecutable no depende de OCX o DLL como VisualBasic.

Al González 08-07-2016 06:30:12

Bueno, bueno, bueno. ¿Tres de ustedes se han puesto de acuerdo, verdad? :p

Recordemos que... ;)

olbeup 08-07-2016 08:26:04

Por supuesto y a ojos cerrados, Delphi, Delphi, Delphi, Delphi, Delphi, Delphi, Delphi, Delphi, Delphi, Delphi, :D:D:D

avmm2004 08-07-2016 09:37:25

Cita:

Empezado por darkbits (Mensaje 506806)
DX10.1 Berlin automáticamente adjunta skin Win10 o el Sistema operativo que estas utilizando por ello pesa así su ejecutable.
prueba en diferentes SO veras q se adapta a cada uno. en visualbasic si no lo colocas un skin la aplicación parece windows 98
yo tengo una aplicación DX10.1 que lo compila en 37Mb y utilizo compresor upx y lo comprime a 3.5Mb una belleza, y lo mejor el ejecutable no depende de OCX o DLL como VisualBasic.

¿ El uso de compresores no ralentiza la carga del programa ? ¿ cual es ?

Gracias

Reasen 08-07-2016 12:19:33

Cita:

Empezado por avmm2004 (Mensaje 506812)
¿ El uso de compresores no ralentiza la carga del programa ? ¿ cual es ?

Gracias

Comprimir apenas se notaría en el inicio del mismo y luego el rendimiento sería igual que si estuviese o no comprimido.

dec 08-07-2016 14:06:51

Hola,

Cita:

Empezado por Reasen (Mensaje 506815)
Comprimir apenas se notaría en el inicio del mismo y luego el rendimiento sería igual que si estuviese o no comprimido.

Tampoco debemos olvidarnos que basta con distribuir nuestro ejecutable comprimido en formato Zip, o bien usando un programa como Inno Setup y alguno de los formatos de compresión disponibles, el archivo que distribuiremos será ya menor que el ejecutable propiamente dicho. Por ejemplo, uno de mis programas "pesa" cerca de 19 MB, pero, el instalador de dicho programa se reduce a unos 10 MB. De este modo nos ahorramos ese "apenas se notaría" del compresor, puesto que ya no usaríamos UPX o un compresor similar.

P.D. Si lo que se busca son archivos ejecutables realmente pequeños en Delphi, había por ahí un proyecto de nombre "KOL Magic Library" que existía al menos hasta para Delphi 7. Usando dichas librerías en lugar de la VCL de Delphi, los ejecutables obtenidos eran sorprendentemente pequeños.

darkbits 08-07-2016 16:27:33

avmm2004 Yo utilizo UPX hasta la fecha es bueno me comprime y no es lento la aplicación,

dec como comprimes en el ejecutable de 19Mb para q termina en algo menos? como lo haces con Inno Setup ? how to ...

dec 08-07-2016 18:56:48

Hola,

Cita:

Empezado por darkbits (Mensaje 506819)
avmm2004 Yo utilizo UPX hasta la fecha es bueno me comprime y no es lento la aplicación,

dec como comprimes en el ejecutable de 19Mb para q termina en algo menos? como lo haces con Inno Setup ? how to ...

En realidad creo que por defecto ya se usa algún tipo de compresión, pero, Inno Setup nos proporciona varias como puede verse aquí. La cosa es que incluso sin usar Inno Setup, simplemente, comprimiendo nuestro archivo ejecutable usando el formato Zip, ya obtendremos una reducción de peso del mismo.

TiammatMX 08-07-2016 19:42:27

Cita:

Empezado por damianccs (Mensaje 506791)
Hice un programa de 'hola mundo' en Delphi consola y pesa 1.163 KB...

Y según tú, ¿cuánto debería "pesar" (pésima aplicación de la palabra, como anotación personal)? Por que los míseros 156 caracteres que se usaron para escribir la instrucción, la forma (otros 20kB), las librerías añadidas, los ganchos para el sistema operativo, más un par de extras, nos dan con justa razón los 1.163 Kb (poco más de 1MB)..., y teniendo en cuenta que cualquier aplicación o PROGRAMA ronda los 20 ~ 25 MB promedio, lo tuyo por pequeño es despreciable, irrelevante...

¿O cuánto consideras que debería "pesar" el 'Hola, mundo!' más poderoso que hayas programado hasta el momento?

AgustinOrtu 08-07-2016 19:45:52

De todos modos, podes generar un ejecutable que no incluya todas las dependencias, y distribuir las dependencias y el binario final por separado; entonces quedaria un ejecutable notablemente mas chico pero que necesitará de los bpl / dll necesarios para poder funcionar. Busca por los foros carga dinamica de paquetes

rocksoft 08-07-2016 23:47:49

Y ya que estamos,

tambien suele ocurrir al hacer unos proyectos sobresimensionados como un HOla Mundo, cae uno en la tentacion de probar varios VLC, que al final no usamos y los borramos del diseño, pero no borramos la libreria de la unit y nos quedan uno residuos estupendos, como cuando usamos Jedi, Devexpres, que directamente te meten unas 10 units a escondidas :) y facilemten te pesa el hola mundo mas de 20 mb

AgustinOrtu 08-07-2016 23:56:08

Definitivamente. Igual, yo ya me acostumbré a eliminar todas las unit que no hacen falta, incluso si es una de las de Delphi estándar

damianccs 09-07-2016 15:30:04

Gracias por sus respuestas, el apoyo que se obtiene en las comunidades de desarrolladores en un lenguaje de programación también es un plus. Saludos

Delphius 11-07-2016 00:49:26

Cita:

Empezado por rocksoft (Mensaje 506826)
Y ya que estamos,

tambien suele ocurrir al hacer unos proyectos sobresimensionados como un HOla Mundo, cae uno en la tentacion de probar varios VLC, que al final no usamos y los borramos del diseño, pero no borramos la libreria de la unit y nos quedan uno residuos estupendos, como cuando usamos Jedi, Devexpres, que directamente te meten unas 10 units a escondidas :) y facilemten te pesa el hola mundo mas de 20 mb

Cita:

Empezado por AgustinOrtu (Mensaje 506827)
Definitivamente. Igual, yo ya me acostumbré a eliminar todas las unit que no hacen falta, incluso si es una de las de Delphi estándar

Ya antes he comentado que el compilador es bastante inteligente y sólo agrega al exe lo que requiera o usa. Que estén enlistadas en uses las units no lo hace al ejecutable final más pesado. Si de esas units no se usa ninguna clase, métodos, funciones, procedimientos, etc simplemente las ignora y no agrega nada al ejecutable.

Ese es el comportamiento por defecto desde D6 y D7 y debiera seguir siéndolo en las nuevas versiones.

Saludos,

AgustinOrtu 11-07-2016 03:22:01

La verdad no lo he probado. Realmente si elimino unidades del uses no es para ahorar kilobytes :D

Aun asi, hay que tener cuidado con las unit que tienen "initialziation" y "finalization". Yo en alguna unit se que uso un "viejo truco":

Código Delphi [-]
initialization
  TAlgunaClase.ClassName // --> Boom! el compilador ya te linkeo la unit :)

Eso lo hago para registrar alguna cosa en algun lado, por ejemplo, como cuando se registran las clases de graficos (distintos formatos de imagenes) o lo mismo para archivos multimedia


La franja horaria es GMT +2. Ahora son las 04:54:01.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi