next up previous index
Siguiente: Estructuras de datos más complicadas Subir: Subrutinas y paso de parámetros Anterior: Ventajas de usar subrutinas   Índice de Materias

Ejercicios con subrutinas

Para aplicar lo que hemos aprendido de subrutinas os pediría que modifiquéis la solución del problema 2.10.1 ahora separando todas las tareas indivisibles en subrutinas. Podéis además comparar la velocidad de ejecución de ambos programas, el viejo y el modificado, usando el programa time en el terminal UNIX*.

Otra manera de valorar el rendimiento de un programa que use subrutinas es ejecutarlo de esta manera: perl -d:DProf programa.pl [argumentos que necesite] . Tras su ejecución se habrá generado un archivo llamado tmon.out que pasaremos como argumento a otro programa: dprofpp tmon.out , generando una salida como esta, donde se ve qué coste empírico tiene cada subrutina durante la ejecución del programa:

Exporter::export has -1 unstacked calls in outer
Exporter::Heavy::heavy_export has 1 unstacked calls in outer
Total Elapsed Time = 34.29820 Seconds
  User+System Time = 16.72820 Seconds
Exclusive Times
%Time ExclSec CumulS #Calls sec/call Csec/c  Name
 64.9   10.85 10.858 124763   0.0000 0.0000  dnalib::get_sq_dist
 23.0   3.852  7.964      3   1.2841 2.6548  dnalib::get_template_contacts
 14.4   2.410  7.221    588   0.0041 0.0123  dnalib::check_base_contact
 6.31   1.055  2.990      3   0.3517 0.9968  dnalib::calc_DNA_complementarity
 3.03   0.507 11.056      3   0.1690 3.6853  dnalib::predict_sites_complex
 0.72   0.121  0.121  28932   0.0000 0.0000  dnalib::tobase4
 0.50   0.084  0.084  30720   0.0000 0.0000  dnalib::num2compbase
 0.42   0.070  0.070      1   0.0700 0.0700  dnalib::extract_BLAST_TF_alignments
 0.41   0.069  0.069    581   0.0001 0.0001  dnalib::calc_Pvalue
 0.41   0.069  0.069    598   0.0001 0.0001  dnalib::calc_family_preferences
 0.24   0.040  0.050      5   0.0080 0.0100  main::BEGIN
 0.23   0.039  8.113      1   0.0391 8.1126  dnalib::build_CM_complexes
 0.20   0.034  0.034  30720   0.0000 0.0000  dnalib::num2base
 0.18   0.030  0.030      3   0.0100 0.0100  dnalib::get_protein_coordinates
 0.17   0.029  0.029    581   0.0001 0.0001  dnalib::calc_def_cost


next up previous index
Siguiente: Estructuras de datos más complicadas Subir: Subrutinas y paso de parámetros Anterior: Ventajas de usar subrutinas   Índice de Materias
Bruno Contreras Moreira 2007-06-15