|
Página 1 de 1
|
Perfilado,depuración De Nuestras Aplicaciones
Autor |
Mensaje |
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
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.
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:
Bien, aquí tenemos el bucle For Next:
Y aquí el bucle Do While:
¿ 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"
|
#1 Miercoles, 12 Junio 2013, 11:31 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
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
última edición por jsbsan el Miercoles, 12 Junio 2013, 11:47; editado 1 vez
|
#2 Miercoles, 12 Junio 2013, 11:46 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
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
|
#3 Miercoles, 12 Junio 2013, 11:48 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Perfilado,depuración De Nuestras Aplicaciones
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:
Ahora el primero es DoWhile:
Y el siguiente es ForNext:
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"
|
#4 Miercoles, 12 Junio 2013, 12:17 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Perfilado,depuración De Nuestras Aplicaciones
Y con un TextArea:
Con For Antes que While:
Con While Antes que For:
¿ 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
|
#5 Miercoles, 12 Junio 2013, 12:33 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
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
|
#6 Miercoles, 12 Junio 2013, 12:57 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
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"
|
#7 Miercoles, 12 Junio 2013, 13:49 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
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
|
#8 Miercoles, 12 Junio 2013, 14:33 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
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
|
|
|
|
|