Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Perfilado,depuración De Nuestras Aplicaciones
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Perfilado,depuración De Nuestras Aplicaciones 
 
Hola!.

Creo que es un tema interesante que "un día" quien tenga tiempo y quiera, pueda crear un tutorial sobre esta opción que nos ofrece Gambas

He creado una aplicación simple donde tengo dos bucles. Uno es For Next y el otro es Do While.
Tal como esto, se podría haber puesto otra cosa en el interior del bucle.

Public Sub _new()

End

Public Sub Form_Open()

BucleForNext()
BucledoWhile()

End


Public Sub BucleForNext()
  Dim x As Integer
  
  For x = 0 To 10
    Print "Valor de x: " & x
  Next  
  
End

Private Sub BucledoWhile()
  Dim x As Integer
  
  Do While x <= 10
    Print "Valor de x: " & x
    x += 1
  Loop
  
End
 

Tengo activa la opción de perfilado en este ejemplo.
Lo curioso del tema es el tiempo que tarda cada bucle en ejecutarse.

Al cerrarla, ya que no tiene botón de salir. Se observa esta imagen:

 perfilado
Bien, aquí tenemos el bucle For Next:

 buclefor

Y aquí el bucle Do While:

 bucledowhile_1371032916_833823

¿ Que habéis observado ?.
¿ Creéis que el bucle Do While fue mas rápido ?.

¿ Tanto va tardar el bucle ForNext con respecto al DoWhile ?.

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: Perfilado,depuración De Nuestras Aplicaciones 
 
Shell:

Lo mismo es una chorrada lo que digo... pero los bucles estan escribiendo algo en pantalla (lo mismo para los dos bucles):
Citar:
Print "Valor de x: " & x


El primero que se ejecuta es el For Next... que tiene la pantalla de la consola "vacia", y luego se ejecuta el While, que ya tiene algo en la consola escrito, y que tiene que "subir hacia arriba" el texto anteriormente escrito...lo mismo aqui esta la diferencia de rendimiento.....

¿podrias cambiar el orden de ejecución de las bucles, a ver que valores te dá?

¿y si en vez de imprimir en pantalla, podrian hacer otra cosa,...calculan un factorial de un numero grande, por ejemplo?, lo mismo hay esta la diferencia...

Lo que si he observado siempre  que imprimir en la consola mensajes, si interfiere en la velocidad que se ejecuta la aplicación aunque solo sea menajes de "avisos", o "comentarios".

Saludos
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Miercoles, 12 Junio 2013, 11:47; editado 1 vez 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Perfilado,depuración De Nuestras Aplicaciones 
 
Pues sí. El bucle while, se limita a evaluar una condición y salir o repetir.
El bucle for necesita incrementar una variable según el step que se le marque (1 pof defecto), grabar en memoria el valor incrementado y evaluar después la condición de finalización y entonces salir o repetir
Sólo de escribirlo me he cansado...
   

Se me ha cruzado la respuesta con la de Julio. Lo que Julio propone es cierto sobre la prueba realizada, pero la evaluación del bucle en sí mismo siempre será más lenta en un for que en un while.
 



 
última edición por shordi el Miercoles, 12 Junio 2013, 11:49; editado 1 vez 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Perfilado,depuración De Nuestras Aplicaciones 
 
jsbsan escribió: [Ver mensaje]
Shell:

¿podrias cambiar el orden de ejecución de las bucles, a ver que valores te dá?



Claro. Ahora se nota el cambio que comentaste sobre el uso de la consola.

Perfilado:

 perfilado_1371035549_905652

Ahora el primero es DoWhile:

 bucledowhile_1371035574_369411

Y el siguiente es ForNext:

 buclefornext_1371035611_478627

Como podéis observar ForNext ha tardado algo menos. Pero ¿ creéis que fue mucha la diferencia ?.

Lo próximo sera intentarlo en un componente de texto.Pues no sabia que si se imprime en consola el tiempo fuera mayor.

Shordi:
Entonces siempre sera mas recomendable a la hora de trabajar con bulces, usar un Do While.


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: Perfilado,depuración De Nuestras Aplicaciones 
 
Y con un TextArea:

Public Sub Form_Open()


BucleForNext()
BucledoWhile()

End


Public Sub BucleForNext()
  Dim x As Integer
  
  For x = 0 To 10
    TextArea1.Text &= "Valor de x: " & x & gb.NewLine
  Next  
  
End

Private Sub BucledoWhile()
  Dim x As Integer
  
  Do While x <= 10
    TextArea1.Text &= "Valor de x: " & x & gb.NewLine
    x += 1
  Loop
  
End
 


Con For Antes que While:

 forywhile


Con While Antes que For:

 whileyfor

¿ Conclusiones con respecto a la consola ?.
Son muy parecidos cuando lo hacemos con un componente para texto, una diferencia mínima. Y se nota cambio de tiempo con la impresión en la consola ( es mas rápida).
Tiene que crear componentes, etc..
Pues otra cosa que hacer, saber usar la opción de perfilado. No diréis que gambas no es entretenido..

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Miercoles, 12 Junio 2013, 12:37; editado 1 vez 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Perfilado,depuración De Nuestras Aplicaciones 
 
Citar:
Entonces siempre sera mas recomendable a la hora de trabajar con bulces, usar un Do While.


No. Esos milisegundos son despreciables en bucles "normales". Salvo que sean bucles de enorme cantidad de iteraciones no vale la pena retorcer la lógica para usar siempre el while.

Si tienes que recorrer un Array, por ejemplo, usa For. (Por cierto ¿Comparativa entre for n=0 to miarray.count  y for each cadena in miarray?)

Saludos
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Perfilado,depuración De Nuestras Aplicaciones 
 
Shordi:

En cuestión de mucho código y ahorrar tiempo de un sitio y otro, pues si.

Siempre uso For para los array, a menos que sean objetos, que normalmente uso For Each, depende.
El test os queda a vosotros.

Es que ya va siendo hora del rancho!.  

Esta claro que estos ejemplos son muy cortos y  cuando son aplicaciones muy grandes, cambia mucho la cosa.
Y según el tema dibujo, base de datos,etc. Hay que mirar muchos aspectos.

¿ Realmente nos preocupamos tanto ?.  

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: Perfilado,depuración De Nuestras Aplicaciones 
 
Citar:
¿ Realmente nos preocupamos tanto ?.  


Es una herramienta valiosa para estudiar como esta funcionando el código de tu programa, y optimizarlo... si no la  tuviésemos seria muy difícil ver que parte de nuestro programa (funciones, subrutinas) esta "mermando" la velocidad de nuestro programa... y así podemos centrarnos en esas subrutinas "mas lentas" para conseguir mejoras en el rendimiento, sin perder el tiempo en intentar mejorar otras que "no pesan" tanto en el rendimiento del programa.

Yo la use en mi programa de damas inglesas, y me servio para "optimizarlo".


Citar:
Es que ya va siendo hora del rancho!.

Y yo también...  

Saludos
 




===================
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
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Crear Rutina Para Brindar Actualizaciones ... aristicol Aplicaciones/Fragmentos de Código 17 Sabado, 27 Noviembre 2010, 12:42 Ver último mensaje
CanihoJR
No hay nuevos mensajes ¿como Subir Nuestras Aplicaciones Al Cent... jsbsan Mundo Linux 3 Jueves, 29 Septiembre 2016, 14:48 Ver último mensaje
tincho
No hay nuevos mensajes Donde Buscar Icono Gpl Para Nuestras Aplic... v3ctor General 4 Lunes, 01 May 2017, 23:48 Ver último mensaje
v3ctor
No hay nuevos mensajes Borrar Archivos De Configuracion De Nuestr... jsbsan General 6 Miercoles, 24 Octobre 2018, 18:29 Ver último mensaje
jsbsan
 

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