• Domingo 22 de Diciembre de 2024, 20:23

Autor Tema:  Re: Variables en un procedimiento  (Leído 1073 veces)

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Variables en un procedimiento
« en: Lunes 25 de Agosto de 2003, 10:41 »
0
Hace tiempo que me pregunto si es indiferente el momento en que se declara cada variable dentro de una sub o función. Normalmente declaro las variables al comienzo del procedimiento, más que nada por verlas todas juntas, pero cada vez que hago esto se me plantea la siguiente cuestión: Si una variable de las declaradas sólo se usa cuando se cumple una determinada condición tal vez convendría declararla en el momento que se va a usar. Es decir, imaginaos un código de este estilo

     Dim lng1 as Long , lng2 as Long

     If Condicion Then
         lng1 = 111111
         Msgbox lng1

         Exit Sub

     Else
         Lng1 = 222222
         Lng2 = 333333
               .
               .
               .
     End If

Supongo que si defino las variables al principio automáticamente se asigna memoria para ellas. Sin embargo, si hago lo siguiente

     Dim lng1 as Long
     If Condicion Then
         lng1 = 111111
         Msgbox lng1

         Exit Sub

     Else
         lng1 = 222222
         Dim lng2 as Long
         lng2 = 333333
               .
               .
               .
     End If

¿Si se cumple la condición me he ahorrado el espacio en memoria para lng2? Sospecho que realmente es así pero me gustaría confirmarlo.

Saludos a todos.

J.M.Movilla

  • Miembro MUY activo
  • ***
  • Mensajes: 427
    • Ver Perfil
Re: Variables en un procedimiento
« Respuesta #1 en: Lunes 25 de Agosto de 2003, 11:51 »
0
Pues, efectivamente con la declaración de las variables justo cuando vayas a usarlas te evitas asignar memoria innecesariamente.

Si vas a asignar tipos Long  o sobre todo Variant puede que merezca la pena el ahorro, lo mismo que si la rutina gestiona un bucle persistente; pero en una subrutina que dura milésimas de segundo por lo general no suele importar que ocupe unos bytes del RAM, sabiendo que al terminar la subrutina esa memoria va a quedar liberada.  Más importante es el hecho de que cada vez que hacemos asignaciones nos exponemos a que la memoria se recupere fragmentada... lo cual va a enlentecer el flujo de la aplicación... y eso sí es motivo para que evitemos asignaciones innecesarias.

Saludos

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Variables en un procedimiento
« Respuesta #2 en: Lunes 25 de Agosto de 2003, 12:00 »
0
Muchas gracias por tu respuesta.

Lo más lógico era suponer que sucediera como me cuentas, al fin y al cabo Dim es una instrucción, y mientras no se ejecute entiendo que no se debería notar ningún efecto. La incógnita para mi era si una vez que el programa se compila sigue ocurriendo lo mismo.
Bueno, me iré acostumbrando a declarar las variables conforme las vaya necesitando...

Muchas gracias de nuevo y recibe un cordial saludo.