[pyar] unittesting performance
Sebastián Seba
ssebastianj en gmail.com
Jue Mayo 8 23:50:08 ART 2014
El 8 de mayo de 2014, 20:35, Angel Java Lopez <ajlopez2000 en gmail.com>escribió:
> 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
>>
>
>
> _______________________________________________
> 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
>
Pregunto de curiosón ¿se podría usar cProfile para el caso que necesita
Andrés?
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140508/bd151934/attachment-0001.html>
More information about the pyar
mailing list