Foros - Stratos

Proyectos => CRM32Pro => Mensaje iniciado por: vsaavedra en 04 de Julio de 2011, 07:20:47 PM

Título: Tiempo de ejecucion de CRM32Pro.Update()
Publicado por: vsaavedra en 04 de Julio de 2011, 07:20:47 PM
Buenos días.
Estoy realizando una aplicación con CRM32Pro sobre openSuse 11.3 y tengo un problema que no se presenta cuando hago el desarrollo sobre openSuse 10.3.
Sucede que en openSuse 11.3, el comando CRM32Pro.Update () toma entre +/-3ms y +/-52ms en ejecutarse, y no un tiempo aproximadamente constante como yo supuse.  Como resultado, mi aplicación se ve normal por momentos (cuando el CRM32Pro.Update () toma +/-3ms), y en otros momentos se ve lenta (cuando el CRM32Pro.Update () toma +/-52ms).  Y en mi programa necesito que el CRM32Pro.Update () se ejecute cada 20ms, entonces este tiempo  no se está cumpliendo la mayor parte de las veces.
Quisiera saber de qué depende el tiempo que demora en ejecutarse el comando CRM32Pro.Update (),ya que incluso con una aplicacion simple de prueba, con un solo blit en pantalla y un pequeño sprite que se dibuja cada cierto tiempo, sucede lo mismo, el tiempo que demora en ejecutarse el Update () no es constante.
Cuando he probado en openSuse 11.3, he utilizado CRM32Pro v 5.00 y v 4.99b y en ambos casos tengo el mismo problema.  Sobre openSuse 10.3 solo he utilizado CRM32Pro v 4.99b, y en este caso los tiempos van desde +/-3ms hasta +/-27ms, entonces debe ser por eso que no he notado el problema, ya que la actualización en pantalla la estoy realizando cada 20ms.
No sé si este problema se deba a la version de Linux, que tal vez requiera una recompilación del CRM32Pro para el nuevo kernel.
openSuse 10.3 - kernel v. 2.6.22.5-31
openSuse 11.3 - kernel v. 2.6.34.-12
O si tuvieran algún comentario o sugerencia, sería de mucha utilidad.

Gracias de antemano.
Viviana
Título: Re: Tiempo de ejecucion de CRM32Pro.Update()
Publicado por: TheAzazel en 14 de Julio de 2011, 11:52:22 AM
Hola,

el metodo CRM32Pro.Update() realiza un SDL_Delay() igual a CRM32Pro.Config.bMTFriendly. Prueba a ponerlo a 0 para que no realice ningun delay (el inconveniente es que la cpu se podra probablemente a 100% a no ser que lo controles por otro lado).

En mis notas, cuando estuve probando ese delay y le pedia 1ms, en windows me cedia el control depues de 2 o 3ms y en Linux era bastante mas alto, del orden de 10-20ms, en cualquier caso jamas tan alto como los 50ms que has observado...

Quizas no se deba a eso y sea por otro problema, de nuevo y como siempre os pido en estos casos, si me puedes enviar el programa (que compile) ese que dices simple y que tambien te da esos retrasos mejor que mejor, porque puedo ver si hay algo raro o no.

Por otro lado, probablmente hoy suba a la web una RC de la v5.10, en principio lo iba a subir solo para windows pero dado que estas en linux, lo compilare tambien y lo subo para linux tambien y si puedes, pruebalo a ver porque trae varios cambios.

Salu2
Título: Re: Tiempo de ejecucion de CRM32Pro.Update()
Publicado por: vsaavedra en 21 de Julio de 2011, 01:41:17 AM
Gracias por la respuesta.
He probado poniendo CRM32Pro.Config.bMTFriendly = 0, pero el problema se mantiene.
Voy a ordenar el código del programa de prueba y te lo enviaré por e-mail, de paso que me haces tu comentario por si se trata de algo que no estoy haciendo de manera correcta  :-[
Saludos y gracias otra vez.


Viviana