[pyar] unittesting performance

Andres Riancho andres.riancho en gmail.com
Jue Mayo 8 19:20:50 ART 2014


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


More information about the pyar mailing list