• Publicidad

Performance de código

¿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.

Performance de código

Notapor xperlero » 2007-06-05 13:27 @602

Estoy haciendo reingeniería sobre muchos scripts Perl en un programa bancario y quieren que vaya más rápido. Me gustaría que me dieran varios consejos de cómo mejorar significativamente el código Perl.
xperlero
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2007-06-05 13:04 @586

Publicidad

Notapor explorer » 2007-06-05 15:31 @688

  • Cambiar el ordenador por uno más rápido :-)
  • Cambiar la red por una más rápida :-)
  • Usar las opciones de profiling de Perl para saber cuáles son las partes más lentas. Se corre con perl -d:DProf programa.pl. Más información en Google buscando por las palabras profiling y Perl.
  • Depende un poco de si los programas duran mucho tiempo o no. En el segundo caso hay que atacar la parte de carga de los módulos, mientras que en el primer caso, hay que hacer profiling y probar diversas opciones.
  • Hay algunos trucos para aumentar la velocidad de un programa: * Cargar sólo las funciones de los módulos que realmente necesitemos y no importar todo su espacio de nombres. * Usar el método de Autoload para que las funciones estén disponibles a medida de que se necesiten (hay módulos que ayudan a esto).
  • También depende del tipo de dato que se maneje. No es lo mismo tratar strings, que bases de datos que ficheros en binario directamente.
  • Y el tamaño. El problema puede decir que hay que procesar un fichero de texto, pero al descubrir que ese fichero ocupa 300Mb, su tratamiento puede ser muy distinta de lo pensado al principio.
  • A veces, cambiar un módulo por otro da el resultado buscado. Por ejemplo, cambiar el sistema de relleno de hojas de cálculo Excel con Win32::OLE por Spreadsheet::WriteExcel permite que el programa sea trasladado desde un Windows a un Linux, con lo que las prestaciones aumentan en varias unidades de potencia.
  • El sistema operativo influye mucho, sobre todo cuando Perl necesita reservar muchos elementos en memoria de pequeño tamaño, como cuando se manejan hashes o arrays con referencias a otras estructuras. Si se agota la memoria, el sistema necesitará recuperar esas zonas, pero según sea ese sistema operativo se negará a hacerlo o no.
  • Ampliar la memoria del ordenador puede ser un plus. Hay que ver la evolución de la memoria consumida a lo largo de la ejecución del programa. Si la memoria se agota, el sistema operativo empieza a usar la memoria de intercambio, con lo que se degrada mucho su rendimiento final.
  • ...
Última edición por explorer el 2007-06-06 04:44 @239, editado 1 vez en total
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Performance de código

Notapor xperlero » 2007-06-06 03:56 @206

Gracias Explorer, me das buenas ideas en especial las de profiling. voy a más estudiar este tema para aplicarlo.
xperlero
Perlero nuevo
Perlero nuevo
 
Mensajes: 4
Registrado: 2007-06-05 13:04 @586


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron