Acerca variables locales

Acerca variables locales

Postby Raymundo Islas M. » Wed Jun 06, 2012 12:41 am

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
FWH 10.6 + xHarbour + Borland 582
User avatar
Raymundo Islas M.
 
Posts: 592
Joined: Tue Mar 14, 2006 11:34 pm
Location: Acapulco, Gro. MEXICO

Re: Acerca variables locales

Postby hmpaquito » Wed Jun 06, 2012 11:19 am

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
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Acerca variables locales

Postby Antonio Linares » Wed Jun 06, 2012 11:53 am

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 :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Acerca variables locales

Postby Raymundo Islas M. » Wed Jun 06, 2012 1:56 pm

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 los cables por tantos :: :wink: 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
User avatar
Raymundo Islas M.
 
Posts: 592
Joined: Tue Mar 14, 2006 11:34 pm
Location: Acapulco, Gro. MEXICO

Re: Acerca variables locales

Postby carlos vargas » Wed Jun 06, 2012 6:21 pm

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.
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1683
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Acerca variables locales

Postby Daniel Garcia-Gil » Wed Jun 06, 2012 7:46 pm

Hola

Aqui esta el link a la clase

http://forums.fivetechsupport.com/viewtopic.php?p=124578#p124578

hmpaquito 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.


para tu caso usaria un hash, que son mas rapidos que los arrays y no tendria que usar los translate

ejemplo

FUNCTION MyFun()
Local hLocal := { => }

hLocal[ "CODIGO" ] := "000003"
hLocal[ "VAR" ] := 123.4

aqui les dejo mis dos centavos
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Acerca variables locales

Postby Raymundo Islas M. » Wed Jun 06, 2012 9:47 pm

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
FWH 10.6 + xHarbour + Borland 582
User avatar
Raymundo Islas M.
 
Posts: 592
Joined: Tue Mar 14, 2006 11:34 pm
Location: Acapulco, Gro. MEXICO


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 91 guests