Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Rendimiento De La Orden Draw...
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Rendimiento De La Orden Draw... 
 
Queria preguntaros, como es mas rapido usar la orden Draw...

Os explico tengo que dibujar en la pantalla muchos clases que incluyen una pictures diferente...

Normalmente haria en cada clase, un método para dibujarla. Por ejemplo:
'Clase Nave
....
...
Public sub dibuja(area  as drawing)
draw.begin(area)
draw.picture(PictureNave,pos.x,pos.y)
draw.end
end
--------------------------------
'Clase Planeta
...
...
...
Public sub dibuja(area  as drawing)
draw.begin(area)
draw.picture(PicturePlaneta,pos.x,pos.y)
draw.end
end


Como veis uso muchos draw.begin y draw.end.... ¿es más rapido crear una subrutina y en  ella dibujarlo todo solo con un draw.begin y un draw.end?

Me explico:
'modulo dibujar toda la pantalla

public sub dibujapantalla(area as drawing,planetas as classplaneta[], naves as classnaves[] )
draw.begin(area)

for a=0 to planeta.count-1
draw.picture(planetas[a].picture,planetas[a].pos.x, planetas[a].pos.y)
next

for a=0 to naves.count-1
draw.picture(naves[a].picture,naves[a].pos.x, naves[a].pos.y)
next

draw.end

end


En principio, parece que la primera forma es mas clara, mas orientada al objeto, pero mas lenta que la segunda ¿no? ¿que os parece?

Saludos

Nota:
¿Hay alguna forma de medir el rendimiento, tiempo que se tarda en hacer una operación, consumo de memoria del ordenador en gambas?
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Rendimiento De La Orden Draw... 
 
Hola Julio.

Es lo normal, construirte un procedimiento para que no repetir partes de código.
Bueno, un método.

La primera forma es mas primitiva si tienes que repetir muchas veces la misma rutina.  

Y si fuera un for each next.Estas tratando con un array.
Es dibujar todos  los planetas y las naves.¿ No ?..Si no, no mostrara todos ellos.

Para medir el tiempo.Una manera fácil seria guardar la hora al comienzo de la rutina que te interesa en una
variable y al acabar en otra.Haces la diferencia.

Saludos.
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Rendimiento De La Orden Draw... 
 
Julio, tenés que pensar en términos de objetos. Si encontraste un método que se repite es que obviaste la existencia de un concepto más abstracto que lo incluye. Por ello, no es que la 1era opción sea más orientada a objetos, de hecho la redundancia de ese método implica que algo está mal. No obstante, no hay razones para pensar que una sería más rápida que la otra.

Si no recuerdo mal, los objetos DrawingArea brindan la posibilidad de usar una caché y es en el uso de esa característica que podría haber una diferencia apreciable en el rendimiento.

Saludos.
 




===================
Cómo programar con Gambas

Speed Books: informática libre.
 
fabianfv - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Rendimiento De La Orden Draw... 
 
Shell:

Citar:
for each next

Buena idea, mirare en la documentacion como hacerlo con un array (yo siempre lo habia usado con consultas de bases de datos   )



fabianfv

Citar:
No obstante, no hay razones para pensar que una sería más rápida que la otra.

Lo que he "descubierto", es que cada vez que se ejecuta un bloque de orden "draw.begin .....  draw.end", dibuja lo que le hayamos dicho... si lo pongo varias veces (una para dibujar el fondo, otro para dibujar cada planeta, otra para dibujar cada nave), provoca un efecto de "refresco" de pantalla

Sin embargo, usando un solo bloque para dibujarlo todo, ese efecto no se nota, quedando mejor la presentacion de los movimientos.


Citar:
los objetos DrawingArea brindan la posibilidad de usar una caché

La propiedad cache del drawingArea, la tengo como true, ya que sino tengo problemas al poner formularios encimas, o mover el objeto...

Gracias !!!    
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Jueves, 07 Junio 2012, 20:17; editado 1 vez 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Rendimiento De La Orden Draw... 
 
jsbsan escribió: [Ver mensaje]


fabianfv

Lo que he "descubierto", es que cada vez que se ejecuta un bloque de orden "draw.begin .....  draw.end", dibuja lo que le hayamos dicho... si lo pongo varias veces (una para dibujar el fondo, otro para dibujar cada planeta, otra para dibujar cada nave), provoca un efecto de "refresco" de pantalla

Sin embargo, usando un solo bloque para dibujarlo todo, ese efecto no se nota, quedando mejor la presentacion de los movimientos.


Pero, ¿estarías redibujando todos los elementos que se ven en el formulario? Si mal no recuerdo, se puede dibujar en un área específica de un DrawingArea, lo que te permitiría redibujar sólo las partes que cambian (que se mueven).

Respecto de que opción "es más POO", es la segunda (aunque ese método debe pertenecer a la clase adecuada).

Por otra parte no entiendo por qué tienes parametrizado el DrawingArea (¿drawing es un control personalizado basado en DrawingArea?). También es confuso el nombre de los arrays classplaneta[] y classnaves[] porque la lógica de tu código indica que son arrays cuyos elementos son objetos de tipo Planeta y de tipo Nave; sería más claro así: "planetas AS Planeta[], naves AS Nave[] (es innecesario y hasta confuso nombrar las clases usando el prefijo "class").

Me gustaría que me cuentes sobre este trabajo tuyo porque yo estuve escribiendo algunos juegos en gambas (aunque no están terminados) para mi libro y como un efecto secundario (pero buscado) lo que está emergiendo es un pequeño framework para juegos.

Por último, una pregunta. ¿Recuerdas si gambas brinda la posibilidad de ajustar el tamaño de una imagen (stretch) para dibujarla en un DrawingArea en un tamaño diferente al original?
 




===================
Cómo programar con Gambas

Speed Books: informática libre.
 
última edición por fabianfv el Viernes, 08 Junio 2012, 03:07; editado 1 vez 
fabianfv - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Rendimiento De La Orden Draw... 
 
fabianfv

Citar:
¿estarías redibujando todos los elementos que se ven en el formulario?

Si, todos, primero el fondo, luego los planetas, luego las naves, luego las explosiones...

Citar:
se puede dibujar en un área específica de un DrawingArea, lo que te permitiría redibujar sólo las partes que cambian (que se mueven).

Pues eso no se como se puede hacer....  



Citar:

DrawingArea (¿drawing es un control personalizado basado en DrawingArea?).


Me equivoque escribiendo el codigo se trata de un DrawingArea... y no de un "drawing"


Citar:
es innecesario y hasta confuso nombrar las clases usando el prefijo "class"

Pues, la verdad es que me resulta más cómodo para escribir el código, ya que aprovecho el Ide de gambas para cada vez que quiero instanciar una clase me resulta mas facil empezar a llamarla con "class..lo que sea" para encontrarla en la ayuda que sale...

Citar:
Me gustaría que me cuentes sobre este trabajo

El juego que quiero hacer es parecido a este Enlace Juego Flash.
Lo que realmente me interesa el programar "la inteligencia del juego".... en eso estoy...

Citar:
¿Recuerdas si gambas brinda la posibilidad de ajustar el tamaño de una imagen (stretch) para dibujarla en un DrawingArea en un tamaño diferente al original?


Lo que dice la ayuda interactiva del ide de gambas es:
capturadepantalla-080612-172807
No se si te servirá...
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Viernes, 08 Junio 2012, 16:30; editado 1 vez 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Draw Vs Paint ahtonio General 3 Domingo, 18 May 2014, 09:59 Ver último mensaje
ahtonio
No hay nuevos mensajes Evaluación Rendimiento Mysql alessandri Programación en otros lenguajes 0 Viernes, 23 Diciembre 2016, 00:30 Ver último mensaje
alessandri
No hay nuevos mensajes Rendimiento Del IDE calcena General 15 Martes, 17 Octobre 2017, 14:51 Ver último mensaje
shordi
No hay nuevos mensajes Como Mejorar El Rendimiento Y Alargar La V... jsbsan Hardware 6 Lunes, 02 Marzo 2020, 14:55 Ver último mensaje
Shell
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron