Más con Symfony

14.9. Comparando el rendimiento

Para comprobar si todo nuestro esfuerzo ha valido la pena, se van a realizar unas pruebas de rendimiento. Para que los resultados sean más interesantes, se añaden muchas clases de formulario en forms.yml mediante un bucle de PHP.

# <?php for ($i = 0; $i < 100; $i++): ?> #
Form<?php echo $i ?>: ~
# <?php endfor; ?> #

A continuación crea todas esas clases mediante el siguiente código:

mkdir($dir = sfConfig::get('sf_lib_dir').'/form/test_fixtures');
for ($i = 0; $i < 100; $i++)
{
  file_put_contents($dir.'/Form'.$i.'.class.php',
    '<?php class Form'.$i.' extends BaseForm { }');
}

Ahora ya se pueden realizar las pruebas de rendimiento, para las cuales se ha ejecutado el siguiente comando de la herramienta ab de Apache en un ordenador tipo MacBook varias veces hasta que la desviación estándar fuera inferior a 2ms.

$ ab -t 60 -n 20 http://localhost/config_cache/web/index.php

El valor base para las comparaciones será el resultado de las pruebas de rendimiento cuando la aplicación no utiliza la característica que mejora los formularios. Comenta la línea de código de sfFormYamlEnhancer en frontendConfiguration y ejecuta las pruebas de rendimiento:

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:    62   63   1.5     63      69
Waiting:       62   63   1.5     63      69
Total:         62   63   1.5     63      69

A continuación se emplea la primera versión de sfFormYamlEnhancer::enhance() que utilizaba directamente sfYaml:

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:    87   88   1.6     88      93
Waiting:       87   88   1.6     88      93
Total:         87   88   1.7     88      94

Se han añadido unos 25 ms de media en cada petición, un aumento cercano al 40%. Por último, se muestran las pruebas de rendimiento cuando se emplea el gestor propio de configuración:

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:    62   63   1.6     63      70
Waiting:       62   63   1.6     63      70
Total:         62   64   1.6     63      70

Como puedes ver, hemos vuelto a obtener los mismos resultados que al principio gracias al uso del gestor propio de configuración.