[pyar] unittesting performance

Andres Riancho andres.riancho en gmail.com
Vie Mayo 9 22:06:34 ART 2014


Mando una respuesta general a los comentarios que me enviaron, desde
ya gracias a todos por sus opiniones!

* "No creo que sea buena idea hacer unittest de performance".

Estoy en desacuerdo, creo que es bueno hacer tests de
unidad/funcionales/performance de todo lo que uno crea importante. Que
no sea algo comun, no quiere decir que no se deba hacer.

Se que podría simplemente hacer un test manual, verificar que
realmente es mas rapido, y olvidarme. La realidad es que lo que hice
hasta hoy... pero... no me garantiza que dentro de 10 dias alguien
cambie algo en la funcion que la haga mas lenta; y ese es mi objetivo.

* "Herramienta automatizada de test de performance?"

Para pruebas manuales estoy usando unos lindos scripts que arme [0]
que utilizan distintas tecnicas para capturar datos.

* Interesante la idea con set_trace, creo que igual me quedo con la
normalizacion que propone Hernan, que suena mucho mas simple y no
tiene el problema de que cada bytecode consumen un tiempo distinto.

* "Graphite, historial, etc." creo que es un overkill, por ahora solo
quiero ver que la funcion siga corriendo a la misma o menos velocidad.

[0] https://github.com/andresriancho/collector

2014-05-09 11:41 GMT-05:00 Ezequiel Brizuela [aka EHB or qlixed]
<qlixed en gmail.com>:
> Considerenme un tipo chapado a la antigua... pero las pruebas de performance
> no deberian ser parte del unittest.
> Deberia estar en una etapa posterior.
> Lo q si podrias integrar al final del unitesting es la ejecucion de pruebas
> de velocidad guardando numeros crudos para dps procesar una vez que se
> finalizo el unittesting.
> Pero sin chequear resultados. Los resultados medilos aparte.
> Como te comentaron antes: si podes usa graphite u alguna otra cosa
> (csv+excel eh visto) para verificar los tiempos, revisar graficas y setear
> thresholds de alarma.
>
> Lista,
>
>     Estuve mejorando la performance de algunas funciones, y ahora
> quiero hacer un unittest que verifique mis mejoras. Lo primero que se
> me ocurrio fue algo como:
>
> start = time.time()
> funcion()
> end = time.time()
> self.assertLower(end-start, 10)
>
>     Eso "funciona", pero no escala, algunos de los problemas:
>
> * Si el dia de mañana me compro una PC dos veces mas rapida, y hago
> que la funcion sea menos performance, el test va a pasar (y no
> deberia).
>
> * Si hay mas de un desarrollador corriendo este test, cada uno con una
> PC distinta, es posible que a uno le pase y a otro le falle
>
> * Si la PC donde se ejecuta el test esta bajo mucha carga, el test
> falla y no es por un problema del codigo.
>
>     Entonces lo que pense en hacer, y no encontre como, es contar la
> cantidad de instrucciones de la maquina virtual de python que se
> ejecutan para "funcion()", a lo que me gustaria llegar es:
>
> start = vm.instructions.count()
> funcion()
> end = vm.instructions.count()
> self.assertLower(end-start, 1047928)
>
>     Esto creo yo que soluciona todos los problemas anteriores, pero...
> no encontre como obtener el numero de instrucciones ejecutadas por la
> VM. Es posible? A alguien se le ocurre otra solucion al problema?
>
> Saludos,
> --
> Andrés Riancho
> Project Leader at w3af - http://w3af.org/
> Web Application Attack and Audit Framework
> Twitter: @w3af
> GPG: 0x93C344F3
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar



-- 
Andrés Riancho
Project Leader at w3af - http://w3af.org/
Web Application Attack and Audit Framework
Twitter: @w3af
GPG: 0x93C344F3


More information about the pyar mailing list