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.