[pyar] unittesting performance

Angel Java Lopez ajlopez2000 en gmail.com
Jue Mayo 8 20:35:26 ART 2014


En otra tecnologia, en un proyecto, se hizo no unit test por falla o no
falla. Sino simplemente medir lo que tarda cada funcion, y generar alguna
salida (en este caso en particular, se genero un JSON para poder luego ser
analizado por cualquier tecnologia que se nos ocurriera).

Cada version que se entregaba cada semana, se corria y se generaba el JSON.
Teniamos las versiones anteriores, y las ejecutabamos. De esa forma,
teniamos una historia de velocidades/performance EN UNA maquina.

Pero habia un script que hacia todo eso. Luego, cualquier podia ir a otra
maquina (todo cabia en un USB), ejecutar el script y recolectar informacion
(se corrian todas las versiones, todo quedaba en archivos JSON, luego se
analizaban).

Asi pudimos probar en distintas maquinas, 32 bits, 64 bits, distinta
capacidad de memoria, procesadores, etc. La performance no era vital, pero
igual este sistema simple nos dio buen feedback (tambien se analizo la
carga de memoria, hacer un garbage collector y ver si influia, etc...)

Supongo que algo asi se podria usar en Python o en Ruby, o en JavaScript
mismo.

Nos leemos!

Angel "Java" Lopez
@ajlopez



2014-05-08 19:20 GMT-03:00 Andres Riancho <andres.riancho en gmail.com>:

> 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
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140508/df0a23c0/attachment-0001.html>


More information about the pyar mailing list