• Publicidad

Optimizar al compilar

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Optimizar al compilar

Notapor netsoul » 2008-11-20 08:48 @408

Buenos días. Estuve probando la compilación con pp en Linux, pero resulta que al compilar me deja con el tamaño que menos imaginaba.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl

use LWP::Simple;

my $pagina = get('http://www.google.com/');

print $pagina;

<STDIN>;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


El archivo google.pl pesa 112 bytes. Al compilar comprobé que ya pesaba 4.4MB ... jojojo...

Me sorprendí. Pregunto si no hay forma de reducirlo, o quizás esto es normal en Perl. Es porque en otros lenguajes no es así si no me equivoco.

Gracias.
netsoul
Perlero nuevo
Perlero nuevo
 
Mensajes: 150
Registrado: 2008-05-04 01:11 @091

Publicidad

Notapor explorer » 2008-11-20 09:42 @446

En esos 4Mb irá el intérprete de Perl y los módulos necesarios para hacer funcionar tu programa.

Yo soy capaz de reducir tu programa a 112 bytes: no compilándolo.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor netsoul » 2008-11-20 11:33 @522

jojo... Muchas gracias... Era lo que esperaba...

¡¡Saludos y gracias nuevamente...!!
netsoul
Perlero nuevo
Perlero nuevo
 
Mensajes: 150
Registrado: 2008-05-04 01:11 @091

Notapor creating021 » 2008-11-20 17:45 @781

explorer escribiste:En esos 4Mb irá el intérprete de Perl y los módulos necesarios para hacer funcionar tu programa.

Yo soy capaz de reducir tu programa a 112 bytes: no compilándolo.

Al menos en versiones viejas, pp no usa el intérprete de Perl (el ejecutable quedaba independiente de las librerías, ahora no sé), de hecho con unzip my_ejecutable podías obtener el código y muchas otras cosas como librerías ( .o ) y todos los módulos que el programa usa.

El tamaño será más grande porque realmente no es una compilación como lo haría gcc, pero se puede reducir eliminando pragmas y librerías innecesarias que el programa usa al momento de ejecutar (como strict y warnings, que pueden estar incluidas en LWP).

Aún así no puedes esperar que el ejecutable sea más pequeño (o igual) que el código... ni siquiera en C o ASM...
Última edición por creating021 el 2008-11-20 18:51 @827, editado 1 vez en total
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Notapor explorer » 2008-11-20 18:18 @804

Otra cuestión es: ¿merece la pena perder tiempo en pensar en compilar programas o en hacerlos?

Con lo rápido que son los ordenadores hoy en día, son pocas las ocasiones en las que necesitamos máximas prestaciones de los programas. Más bien, necesitamos máximas prestaciones de los programadores (que es la parte más cara de todo el proceso, obviamente).

Y para esas situaciones en las que sí está justificado invertir tiempo del programador para conseguir más prestaciones, existen módulos como el Inline::C.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor creating021 » 2008-11-20 18:44 @822

explorer escribiste:Otra cuestión es: ¿merece la pena perder tiempo en pensar en compilar programas o en hacerlos?

Con lo rápido que son los ordenadores hoy en día, son pocas las ocasiones en las que necesitamos máximas prestaciones de los programas. Más bien, necesitamos máximas prestaciones de los programadores (que es la parte más cara de todo el proceso, obviamente).

Y para esas situaciones en las que sí está justificado invertir tiempo del programador para conseguir más prestaciones, existen módulos como el Inline::C.

¡Claro, es lo más importante en este tema!
Perl tiene una velocidad óptima, en comparación con los programas "compilados" con pp.

Es más, quiero recordar que pp quiere decir perl packager (se puede considerar como un shar, casi), y de hecho no es un compilador (el manual lo indica) es... algo complicado que al fin de cuentas no da muchas ventajas (sólo "esconde" el código) porque si mal no estoy, el "compilado" no es más rápido.
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Notapor natxo » 2008-11-21 04:53 @245

Yo también he probado pp para hacer ejecutables para Windows. Mi experiencia no es demasiado buena con pp. Los archivos son grandes (lo cual es normal por los motivos ya expuestos) y su ejecución es lenta. Éste punto sí es crucial para mí. Si su ejecución fuera un poco más lenta no importaría, pero son *mucho* más lentos en ejecutar.

En mi curro llevo meses intentando meter ActivePerl en los servidores Windows porque me permitiría realizar muchas más tareas de modo automático. Al final, lo que hago es usar tinyperl y crear pequeños ejecutables y distribuirlos con la dll y un zip. Si se ejecuta el exe desde la misma carpeta en que están los otros dos archivos, va bien y no hay que 'instalar' nada (muchos administradores Windows se ponen de los nervios si propones instalar algo, y más si lo haces en el disco C: ). En fin.

El problema que se me plantea a mí (con relación a este tema) es que nadie quiere aprender nada. Como administrador de redes/sistemas hoy día es casi imposible encontrar a alguien con interés por aprender algún lenguaje de script (el que sea).

Todos quieren soluciones mascaditas con programas clik clik clik y ya está. Y si no funciona, quieren poder señalar con el dedo al programador y decir: 'es culpa de este software'. Es la gran diferencia entre Windows y Linux en general. La gente que usa Windows está acostumbrada a aflojar la bolsa para hacer cosas. En el mundo del software libre estamos acostumbrados a remangarnos la camisa y currar :-);

Los argumentos que mis compañeros me dan para no usar Perl es que ninguno de ellos lo sabe usar. Mi argumento es que tampoco saben usar wsh o jscript, ni siquiera batch :-), así que si hiciera mis programillas en esos lenguajes interpretados tampoco sabrían cómo solucionar (hipotéticos) problemas con ellos si a mí me atropellara el autobús.

En fin, no sigo porque me sube la tensión :-)
saludos,
Natxo Asenjo
natxo
Perlero nuevo
Perlero nuevo
 
Mensajes: 76
Registrado: 2007-08-09 16:22 @723
Ubicación: Países Bajos

Notapor explorer » 2008-11-21 08:26 @393

natxo escribiste:En mi curro llevo meses intentando meter ActivePerl en los servidores Windows porque me permitiría realizar muchas más tareas de modo automático. Al final, lo que hago es usar tinyperl y crear pequeños ejecutables y distribuirlos con la dll y un zip. Si se ejecuta el exe desde la misma carpeta en que están los otros dos archivos, va bien y no hay que 'instalar' nada (muchos administradores Windows se ponen de los nervios si propones instalar algo, y más si lo haces en el disco C: ). En fin.


¿Ponen alguna pega cuando se trata de instalar o actualizar el motor .Net o el Java? Pues Perl también es un motor de máquina virtual.

natxo escribiste:El problema que se me plantea a mí (con relación a este tema) es que nadie quiere aprender nada. Como administrador de redes/sistemas hoy día es casi imposible encontrar a alguien con interés por aprender algún lenguaje de script (el que sea).

Todos quieren soluciones mascaditas con programas clik clik clik y ya está. Y si no funciona, quieren poder señalar con el dedo al programador y decir: 'es culpa de este software'. Es la gran diferencia entre Windows y Linux en general. La gente que usa Windows está acostumbrada a aflojar la bolsa para hacer cosas. En el mundo del software libre estamos acostumbrados a remangarnos la camisa y currar :-);


El trabajo es muy parecido, pero el lenguaje es distinto. Mientras que ellos prefieren pinchar y arrastrar componentes en pantalla, nosotros preferimos escribir en un editor de textos un map() detrás de un foreach().

Desde luego, la cantidad de información que pueden manejar usando componentes prefabricados es enorme, pero también se les puede indicar que Perl puede manejar enormes cantidades de información usando recursos mínimos... por ejemplo, podrías editar programas Perl en el ordenador de tu empresa, usando una conexión SSH, usando tu teléfono móvil en el taxi que te lleva hasta la empresa del cliente.

Y componentes prefabricados para Perl, hay miles.

natxo escribiste:Los argumentos que mis compañeros me dan para no usar Perl es que ninguno de ellos lo sabe usar. Mi argumento es que tampoco saben usar wsh o jscript, ni siquiera batch :-), así que si hiciera mis programillas en esos lenguajes interpretados tampoco sabrían cómo solucionar (hipotéticos) problemas con ellos si a mí me atropellara el autobús.


Pues si esa empresa tiene esos problemas tienes que hacer esto:

1.- Todo desarrollo que hagas, documéntalo hasta el final, como si de hecho te fueran a atropellar al día siguiente y otro administrador tuviera que encargarse de tus desarrollos. De hecho, => TU MISMO <= serás esa persona pasados unos meses.

2.- Busca otra empresa. En los países Bajos hay unas cuantas que buscan perleros.

Actualización: quizás la opción de buscar una empresa nueva sea demasiado exagerada: dices que eres el Administrador de redes, así que deberías ser tu el responsable de indicar qué es lo que quieres instalar en las máquinas para facilitarte tu trabajo diario.

No eres responsable del poco interés que muestren el resto de trabajadores. Sí que te afecta porque la suma total de incompetencia será determinante para el futuro de la empresa, y tu estás en ella. Por eso confiarás más en una empresa en la que los trabajadores se preocupen de su formación.

A mí me pasó algo parecido: solo realizaba scripts pequeñitos que se dedicaban a mover ficheros de un lado a otro, tipo backup. Un día me preguntaron si les podía echar una mano para hacer algo más complicado. Les dije que sí. Como no estaban interesados más que en el resultado del programa, no me impusieron el cómo hacerlo. Al poco, llené de mis programas Perl toda la empresa. Dos años más tarde, el "gran jefe" se sorprendió de que los programas más vitales funcionaban en un lenguaje "desconocido" cuando "aquí, de toda la vida, todo lo hacemos en C". Respuesta: Perl se utiliza en esta empresa desde el principio, incluso de antes de que yo llegara (que era cierto: había algunos cgi por ahí). Como un "gran jefe" está más a gestionar que a entender cómo funcionan las cosas, no volvió a insistir, así que yo seguí con mis programas. Cinco años más tarde, Perl se usaba como pieza vital de los principales desarrollos, ya que se había demostrado a lo largo del tiempo su:
  1. Versatilidad, frente al C, que se usaba solo para procesamiento puro y duro, mientras que Perl servía para absolutamente todo lo demás. Esto incluye la existencia de librerías en CPAN que resolvían los problemas más extraños.
  2. Adaptación: se podía trabajar en Linux o Windows, el mismo programa.
  3. Rapidez de desarrollo: en un lugar donde hay poca mano de obra es vital tener la herramienta que te resuelva problemas lo más rápidamente posible, dejando como secundario que los programas sean los más rápidos posibles.
  4. Homeostasis (resistencia a los cambios) muy alta: cuando se producían variaciones imprevistas en las condiciones de funcionamiento de los programas, es muy rápido readaptar los programas Perl. E incluso en la mayor parte de los casos, no era necesario cambiar ni una línea de programa.
  5. Soporte: obtener respuesta de la comunidad en pocos minutos. Poder dialogar con los autores de las librerías... eso tiene un precio altísimo... por nada.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor natxo » 2008-11-21 16:33 @731

explorer escribiste:¿Ponen alguna pega cuando se trata de instalar o actualizar el motor .Net o el Java? Pues Perl también es un motor de máquina virtual.

Claro que no, son las tecnologías "oficiales" y aceptadas. De todos modos, explorer, esto no se refiere al desarrollo de aplicaciones sino a administración de sistemas. Son pequeños scripts. Como ya he dicho, no hay nivel para batch file scripting, mucho menos para hacer algo en Java o en C#. Aquí se usan sólo las herramientas gráficas y se pierde muchísimo tiempo con ellas en tareas repetitivas que se pueden automatizar muy fácilmente.

¡Je!, estoy respondiendo y veo que has actualizado tu respuesta con puntos sobre los que llevo varios meses pensando. Veremos lo que nos trae el futuro. El presente no va a cambiar por ahora.

El tema de la documentación, etc., es algo que siempre he hecho. Tengo mi repositorio con control de versiones, un wiki con documentación, todo está ahí. Si no, es imposible acordarse de las 800.000 cosas que se hacen al cabo de los meses.

Es cierto que siendo el administrador puedo instalar en principio lo que quiera, pero es mejor hacer las cosas de mutuo acuerdo y no andar de mal rollo con los colegas; al fin y al cabo estás con ellos casi más que con la familia :shock:
saludos,
Natxo Asenjo
natxo
Perlero nuevo
Perlero nuevo
 
Mensajes: 76
Registrado: 2007-08-09 16:22 @723
Ubicación: Países Bajos

Notapor Jenda » 2008-11-22 05:55 @288

Sí que los ejecutables producidos por C#, C++ o VB parecen pequeños comparándolos con esos producidos por pp. Pero es porque casi todo lo que pp incorpora ya está instalado (o tiene que ser instalado por el usuario) en el sistema. Todos esos vbrunXXX.dll, .Net Framework, msvcrt.dll. Con C#, C++ o VB todos aceptan que tienes que instalar los "runtimes" antes de que el programa funcione; pp hace un archivo con todo incluido. Lo justo para que no necesite nada más.

Imagine un programa similar en C# que contiene todo lo que necesita desde el .Net Framework. Creo que sería mucho más grande que los 4.4MB.
-------------------------------------------------------
- Estoy aquí para practicar español. Si te ayudó mi respuesta ayudame con un mensaje privado sobre mis faltas por favor. Seguramente habrá muchas :-)
Jenda
Perlero nuevo
Perlero nuevo
 
Mensajes: 132
Registrado: 2007-10-29 06:31 @313
Ubicación: Praga, Republica Checa

Siguiente

Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados