[eside-ghost] extensiones C/C++ para Python
Alfredo Beaumont
alfredo.beaumont en gmail.com
Mie Abr 30 09:52:25 CEST 2008
Az, 2008eko Apiren 30a(e)an, altern(e)k idatzi zuen:
> aupa gente
>
> una pregunta un poco vaga para los programadores... como de dificil
> pensais que es para una persona que no hay usado nunca C/C++ pero que se
> maneja bien con Python, hacer extensiones en C/C++ para python?
Bueno, yo diría que tiene una complejidad 'moderada'. No es trivial, pero
bueno, si hay que hacerlo tampoco es que sea excesivamente complicado. Si no
has programado en C/C++ probablemente lo que más te cueste es la parte que
tengas que hacer en ese lenguaje, sobre todo si necesitas que sea eficiente.
> el tema es que tengo un proyecto de investigacion que lleva graficos en
> PyOpenGl en 2D pero necesito que sea mucho mas optimizado. Le he dado
> muchas vueltas y creo que la unica solucion es portar alguna zona de la
> libreria (o puede que entera), como una extension que pueda ser
> controlada desde python. Esto me da un poco de panico pq no tengo ni
> idea de lo complejo que esto pueda ser y no se si puede haber alguna
> otra opcion.
>
> el problema es que necesito renderizar unos 100 de objetos que se mueven
> cada frame, pero a la vez el consumo de CPU tiene que ser muy bajo (max
> 10-15%) actualmente en cuanto meto mas de 25 objetos se me dispara
> aunque le limite el fps al minimo.
Yo lo que haría, antes de embarcarme en la aventura de reescribir parte del
código en C/C++ es _saber_ a qué se debe ese consumo de CPU. Es decir,
tendrás que 'profile'ar tu aplicación y detectar los cuellos de botella. Es
posible que esos cuellos de botella no estén donde piensas que van a estar
(aunque bueno, si es renderizado de gráficos... es probable que esté donde
piensas), y también cuál es la mejor forma de resolverlo, hay varias
opciones:
* Que el problema se pueda resolver desde python optimizando el algoritmo
* Que haya que migrar el algoritmo a C/C++ para resolver el problema
* Que ni siquiera migrando a C/C++ vayas a obtener el rendimiento que
esperas.
En resumen, no te lances a la aventura 'a ciegas', primero invierte algo de
tiempo en ver qué es lo más conveniente.
Saludos
--
Alfredo Beaumont Sainz
http://www.alfredobeaumont.org/blog.cgi
Más información sobre la lista de distribución eside-ghost