SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: Brroz en Lunes 25 de Agosto de 2003, 10:41
-
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.
-
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
-
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.