[Butia-devel-list] Primeras pruebas de rendimiento Butia-C

Jorge xxopxe en gmail.com
Vie Jul 15 20:39:55 UYT 2016


Hola, muy interesante. El benchmarking es un asunto complicado y lleno 
de sutilezas, se puede aprender un montón.

Algunos detalles,

* Tu versión en Python usa un array dinámico y  en C tenes una lista 
enlazada, que pueden tener perfiles de uso distintos. Lo mejor es no 
usar nada de eso sino que acumular el tiempo total directamente en el 
bucle del muestreo (vos lo acumulas en una iteración aparte después).

* Si el interprete de Python usa JIT (PyPy?) entonces las primeras 
iteraciones pueden ser muchísimo mas lentas que el resto.

* Bajo linux podes correr tu benchmark con time ( "$ time ./programa" ) 
para obtener cuanto tiempo tarda y cuanto tiempo de CPU usa tu programa.

* Estimo que vas a ver muy poca diferencia entre los dos programas... El 
tiempo se va en tres cosas:
1. El programa de benchmark, que hace muy poco procesamiento (1000 sumas 
y alguna división), no
hace mucha diferencia y no es lo que queres medir
2. La API de tortuga (los bindings de pyhon y de C)
3. Las comunicaciones sobre el USB (común a ambas versiones, debería ser 
igual)
O sea que la mayor parte de la diferencia que veas va a corresponder al 
punto 2. En cualquier caso, el cómputo que se hace ahi debería ser muy 
pequeño comparado con el tiempo que se va en el punto 3. Si encontras 
una diferencia importante probablemente indicaría que hay algo raro en 
los bindings.

En resumen, interesante :)

Jorge

PS: felicitaciones por hacer la API en C común y no C++, bien ahí.


On 14/07/16 11:03, Guillermo Rodriguez wrote:
> Buenas gente, aprovecho mientras me tomo el café para contarles
> que ayer logre obtener el valor de un sensor de distancia usando Butia-C,
> entonces se me ocurrió hacer unas pruebas de velocidad comparando
> con PyBot, y estos son los resultados:
>
> PyBot:   http://i.imgur.com/uOO6kgR.png 528 microsegundos
> Butia-C: http://i.imgur.com/GJ39jtv.png     273 microsegundos
>
> Link a los dos códigos usados:
>      https://gist.github.com/Darthkpo/4f44322d097c9d5fc122fd41d0e21f35
>
> El código de Butia-C es solo la parte donde hago la consulta y analizo el
> rendimiento, para ver el código completo lo pueden ver en el repo, es
> el archivo "test.c"
> Repo:  https://www.github.com/Darthkpo/butiac
>
> En resumen:
> En mi maquina, una Laptop ProBook 6360b, Butia-C fue aproximadamente
> un 45% mas rápido en consultas a sensores, la diferencia en tiempo real
> es muy pequeña ya que serian tan solo 255 microsegundos, pero cualquier
> mejora es un plus.
>
> Si encuentran algún error en esto, algo que pase por alto no duden en decirlo
> Y antes de terminar me gustaría preguntar si esta bien que mande correos muy
> seguidos, no quiero hacer spam! jaja.
> Saludos!
> _______________________________________________
> Butia-devel-l site list
> Butia-devel-l en fing.edu.uy
> https://www.fing.edu.uy/mailman/listinfo/butia-devel-l



Más información sobre la lista de distribución Butia-devel-l