Mar Jun 05, 2007 12:27 pm
|
 |
xperlero
Perlero Nuevo

|
Registrado: 05 Jun 2007
Mensajes: 4
|
|
| Performance de código |
|
|
| 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. |
|
|
|

Mar Jun 05, 2007 2:31 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4226
Ubicación: Valladolid, España
|
|
|
|
|
- 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.
- ...
Ultima edición por explorer el Mie Jun 06, 2007 3:44 am, editado 1 vez |
|

Mie Jun 06, 2007 2:56 am
|
 |
xperlero
Perlero Nuevo

|
Registrado: 05 Jun 2007
Mensajes: 4
|
|
| Performance de código |
|
|
| Gracias Explorer, me das buenas ideas en especial las de profiling. voy a más estudiar este tema para aplicarlo. |
|
Powered by phpBB © 2001, 2005 phpBB Group
|