Antonio,
En algunas funciones ( no muchas ) de la app veo que tengo ya varias variables locales definidas ( 50-60 aprox ), queriendo hacer una depuracion del codigo, pienso crear una sola usando la clase tPublic de Daniel e ir agregandolas como datas.
Mi preguntas serian :
- Tener muchas locales definidas en el codigo afecta al desempeno de la app ?
- Usar una sola usando la clase, se gana algo en el desempeno ?
- O simple y sencillamente es indistinto ?
Gracias y Saludos
Acerca variables locales
- Raymundo Islas M.
- Posts: 590
- Joined: Tue Mar 14, 2006 11:34 pm
- Location: Acapulco, Gro. MEXICO
Acerca variables locales
FWH 10.6 + xHarbour + Borland 582
Re: Acerca variables locales
Raymundo,
Sin ser especialista yo no veo el problema cuando una funcion es llamada pocas veces; otra cosas es cuando es llamada en multiples iteraciones; en ese caso, creo que lo mejor, cuando hay muchos parametros o muchas Local es usar un array: sera mas rapido que cualquier clase.
El array se usaria con translates que faciliten la comprension.
#Define MAX_LOCAL 2
#Translate .cCodigo => \[01\]
#Translate .cVar => \[02\]
Uso:
FUNCTION MyFun()
Local aLocal:= Array(MAX_LOCAL)
aLocal.cCodigo:= "000003"
aLocal.cVar := 123.4
...........
Espero que te pueda servir. Saludos
Sin ser especialista yo no veo el problema cuando una funcion es llamada pocas veces; otra cosas es cuando es llamada en multiples iteraciones; en ese caso, creo que lo mejor, cuando hay muchos parametros o muchas Local es usar un array: sera mas rapido que cualquier clase.
El array se usaria con translates que faciliten la comprension.
#Define MAX_LOCAL 2
#Translate .cCodigo => \[01\]
#Translate .cVar => \[02\]
Uso:
FUNCTION MyFun()
Local aLocal:= Array(MAX_LOCAL)
aLocal.cCodigo:= "000003"
aLocal.cVar := 123.4
...........
Espero que te pueda servir. Saludos
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Acerca variables locales
Raymundo,
Permíteme una reflexión
Cuando se programa, uno comienza con unas ideas en la mente, y al ir desarrollando, el modelo va tomando forma al mismo tiempo que en nuestra mente se va delimitando con más detalle nuestra idea inicial. Yo soy contrario a un exhaustivo análisis inicial, creo que lo más hermoso es que el mismo programa te indique el camino, y a esto voy:
Las variables y las funciones te van a ir "diciendo" lo que necesitas, y como tienes que hacerlo. Yo no suelo empezar usando clases, sino que espero a que el programa me indique cuales son y como quiere ser modelado
Cuanto más claro esté en tu mente el modelo que estas construyendo, más y más podrás avanzar en su desarrollo. Y es aqui en donde entra la programación orientada al objeto. Cuando aumentan el numero de variables y de funciones en realidad ya puedes empezar a identificar los objetos que estas usando en tu programa, y esta es la clave para simplificarlo y que asi puedas continuar su desarrollo más y más.
No hay problema por el numero de variables que uses, los ordenadores actuales tienen recursos de sobra, la cuestión es: no pueden agruparse esas variables en datos de distintos objetos ? Las funciones que usas no son en realidad métodos de esas clases de objetos ?
No se trata de ocultarlas, sino de agruparlas en los distintos objetos que estamos usando realmente. Dejar que el código te indique lo que hay que hacer
Permíteme una reflexión
Cuando se programa, uno comienza con unas ideas en la mente, y al ir desarrollando, el modelo va tomando forma al mismo tiempo que en nuestra mente se va delimitando con más detalle nuestra idea inicial. Yo soy contrario a un exhaustivo análisis inicial, creo que lo más hermoso es que el mismo programa te indique el camino, y a esto voy:
Las variables y las funciones te van a ir "diciendo" lo que necesitas, y como tienes que hacerlo. Yo no suelo empezar usando clases, sino que espero a que el programa me indique cuales son y como quiere ser modelado
Cuanto más claro esté en tu mente el modelo que estas construyendo, más y más podrás avanzar en su desarrollo. Y es aqui en donde entra la programación orientada al objeto. Cuando aumentan el numero de variables y de funciones en realidad ya puedes empezar a identificar los objetos que estas usando en tu programa, y esta es la clave para simplificarlo y que asi puedas continuar su desarrollo más y más.
No hay problema por el numero de variables que uses, los ordenadores actuales tienen recursos de sobra, la cuestión es: no pueden agruparse esas variables en datos de distintos objetos ? Las funciones que usas no son en realidad métodos de esas clases de objetos ?
No se trata de ocultarlas, sino de agruparlas en los distintos objetos que estamos usando realmente. Dejar que el código te indique lo que hay que hacer
- Raymundo Islas M.
- Posts: 590
- Joined: Tue Mar 14, 2006 11:34 pm
- Location: Acapulco, Gro. MEXICO
Re: Acerca variables locales
Antonio,
Gracias por el comentario, de hecho, de esa manera ha sido la forma en que han sucedido las cosas :
Empiezo con un proceso base y conforme se requiere o los clientes solicitan algo, voy haciendo los ajustes pertinentes y por ende se incrementa el numero de variables y funciones.
No utilizo la forma de programacion tipo OOP, se me cruzan _ por tantos :: me apego a la "tradicional" : Una funcion Main, un Init Procedure, un Exit Procedure y las demas son Static Functions. Tienes razon, la mayoria de los clientes tiene pcs "aceptables" salvo raras ocasiones que todavia te encuentras alguno con una pc que tiene solo 512 mb de ram
Paquito,
Gracias por tu sugerencia, ese metodo lo uso actualmente con las varibles Static, creo un arreglo y en el meto todas las que uso.
Y sip, las que mas me preocupa optimizar son las funciones de mayor uso, les agradezco a ambos sus opiniones.
Saludos
Gracias por el comentario, de hecho, de esa manera ha sido la forma en que han sucedido las cosas :
Empiezo con un proceso base y conforme se requiere o los clientes solicitan algo, voy haciendo los ajustes pertinentes y por ende se incrementa el numero de variables y funciones.
No utilizo la forma de programacion tipo OOP, se me cruzan _ por tantos :: me apego a la "tradicional" : Una funcion Main, un Init Procedure, un Exit Procedure y las demas son Static Functions. Tienes razon, la mayoria de los clientes tiene pcs "aceptables" salvo raras ocasiones que todavia te encuentras alguno con una pc que tiene solo 512 mb de ram
Paquito,
Gracias por tu sugerencia, ese metodo lo uso actualmente con las varibles Static, creo un arreglo y en el meto todas las que uso.
Y sip, las que mas me preocupa optimizar son las funciones de mayor uso, les agradezco a ambos sus opiniones.
Saludos
FWH 10.6 + xHarbour + Borland 582
- carlos vargas
- Posts: 1421
- Joined: Tue Oct 11, 2005 5:01 pm
- Location: Nicaragua
Re: Acerca variables locales
Raymundo, me parece que Daniel habia realizado un clase similar para manejo de variables, y creo era mas eficiente, si no estoy mal creo que usaba hash.
podrias buscarla aca en el foro.
podrias buscarla aca en el foro.
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
Carlos Vargas
Desde Managua, Nicaragua (CA)
- Daniel Garcia-Gil
- Posts: 2365
- Joined: Wed Nov 02, 2005 11:46 pm
- Location: Isla de Margarita
- Contact:
Re: Acerca variables locales
Hola
Aqui esta el link a la clase
http://forums.fivetechsupport.com/viewt ... 78#p124578
ejemplo
FUNCTION MyFun()
Local hLocal := { => }
hLocal[ "CODIGO" ] := "000003"
hLocal[ "VAR" ] := 123.4
aqui les dejo mis dos centavos
Aqui esta el link a la clase
http://forums.fivetechsupport.com/viewt ... 78#p124578
para tu caso usaria un hash, que son mas rapidos que los arrays y no tendria que usar los translatehmpaquito wrote:Sin ser especialista yo no veo el problema cuando una funcion es llamada pocas veces; otra cosas es cuando es llamada en multiples iteraciones; en ese caso, creo que lo mejor, cuando hay muchos parametros o muchas Local es usar un array: sera mas rapido que cualquier clase.
ejemplo
FUNCTION MyFun()
Local hLocal := { => }
hLocal[ "CODIGO" ] := "000003"
hLocal[ "VAR" ] := 123.4
aqui les dejo mis dos centavos
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
- Raymundo Islas M.
- Posts: 590
- Joined: Tue Mar 14, 2006 11:34 pm
- Location: Acapulco, Gro. MEXICO
Re: Acerca variables locales
Carlos,
De esa clase es la que me refiero, tPublic que internamente usa hash y que es la misma del link que pone Daniel.
Daniel,
Muchas gracias por la clase y la aclaracion de los hash vs arrays. Hasta donde lei los hash solo aplica a Character, Numeric y Date cierto ? Aun siendo asi, estoy del otro lado ya que con eso abarco casi todo lo quiero optimizar.
Gracias y saludos a ambos
De esa clase es la que me refiero, tPublic que internamente usa hash y que es la misma del link que pone Daniel.
Daniel,
Muchas gracias por la clase y la aclaracion de los hash vs arrays. Hasta donde lei los hash solo aplica a Character, Numeric y Date cierto ? Aun siendo asi, estoy del otro lado ya que con eso abarco casi todo lo quiero optimizar.
Gracias y saludos a ambos
FWH 10.6 + xHarbour + Borland 582