Rendimiento de SDL y CRM32Pro

26 Octubre, 2006

Varias personas me han preguntado por mail si existe diferencia en el rendimiento entre usar solo SDL o CRM32Pro y la respuesta es afirmativa. Ojo, que esto solo es cierto en modo software. En modo hardware son totalmente identicas.

Hace ya mas de un año me dedique a optimizar el memcpy para que utilizara MMX, tecnicas prefetch, etc. adecuadas para cada arquitectura de CPU actuales. El resultado es que una vez que inicias CRM32Pro y aunque solo utilices SDL, estaras usando automaticamente las mejores funciones para tu micro y ademas, dependiendo del tamaño de la copia, tambien utilizara unas u otras.

Esta diferencia no es muy grande en condiciones normales, pero existe diferencia. En condiciones favorables, por ejemplo bliteo consecutivo de superficies grandes(como un fondo de un menu), la diferencia es bastante mas dramatica, en algunos casos, casi el 80%. Pero como estos casos no nos interesan..(a quien le importa si el menu va a mas o menos fps??), voy a colgar una grafica de las pruebas que hice en su momento en el caso mas desfavorable que es muchas copias de sprites de reducido tamaño(16×16pixels) de un juego que esta desarrollando Ivo Wubbels que casualmente, descubrio un bug serio de rendimiento en el apartado grafico. Este bug existia en las versiones anteriores a la 4.90, en el resto, esta reparado :) .

SDL and CRM32Pro performance

Cuando tenga mas tiempo libre, colgare en la web otro benchmark sobre velocidad de bliteo de sprites para que podais comprobar en vuestros propios equipos la velocidad de solo SDL, de CRM32Pro y quizas para comparar, algun backend por hardware como ddraw y glSDL.


XOR,CRC32,MD5,Rand,UCL and BlowFish benchmarks

13 Septiembre, 2006

El otro día estaba un poco aburrido y se me ocurrió medir el rendimiento de un par de algorítmos que utilizo en CRM32Pro y en otros proyectos. Al final me puse y lo termine rápido, me costo más pulir los pequeños detalles que otra cosa y bueno, en el trabajo lo he podido probar en dos máquinas Pentium4 además de en mi portátil.

Por otro lado, he compilado con Intel C++ 9.1 y con el Visual C++ 2003 para ver las diferencias en este tipo de código y es impresionante el compilador de Intel…puff, y eso que no he utilizado varios threads para que en multiprocesadores la cosa vuele!. He de puntualizar que los algoritmos CRC32, BlowFish y el Rand no standard de las librerías de C…solo los he probado con el Visual C++ 2003 pero seguro que también se nota una ganancia en rendimiento.

Por último y antes de pasar a los resultados, hay que aclarar en que estan las medidas… pues bien, el primer grupo son en MegaBytes por segundo y el segundo en ejecuciones por segundo.

Quizás alguien se pregunte con que cantidad de datos o durante cuanto tiempo… pues bien, son 10 grupos de pruebas, el más pequeño son 64bytes y el más grande 10Megabytes y cada prueba son 2 segundos para no hacerlo eterno.


Leer el resto de esta entrada »