їVariable global, o variable por cada cуdigo?
#1

Hola.

їQue sale mas rentable?
Esto:
Код:
new string[2000];
public OnPlayerConnect(playerid)
{
    format(string, 24,"Bienvenido usuario #%d.", playerid);
    SendClientMessage(playerid, string);
    return 1;
}

public OnPlayerSpawn(playerid)
{
    format(string, 34,"ЎHas spawneado, usuario #%d.", playerid);
    SendClientMessage(playerid, string);
    return 1;
}
//Y asн por diversos cуdigos.
O esto:
Код:
public OnPlayerConnect(playerid)
{
    new string[25];
    format(string, 25,"Bienvenido usuario #%d.", playerid);
    SendClientMessage(playerid, string);
    return 1;
}

public OnPlayerSpawn(playerid)
{
    new string[35];
    format(string, 35,"ЎHas spawneado, usuario #%d.", playerid);
    SendClientMessage(playerid, string);
    return 1;
}
//Y asн por diversos cуdigos.
Y tambiйn quiero saber el porque... їMemoria? їMagia del jebus?
Reply
#2

Prefiero la segunda opciуn, y la verdad es q no tiene algъn beneficio usar eso, :3 saludos...
Reply
#3

Locales para las variables que vayas a usar de ese modo, globales si necesitas la informaciуn en diferentes partes del cуdigo.
Reply
#4

La segunda opciуn es preferible.
Reply
#5

Quote:
Originally Posted by Kaponi
Посмотреть сообщение
Prefiero la segunda opciуn, y la verdad es q no tiene algъn beneficio usar eso, :3 saludos...
Mucho tiempo tuve el concepto de:

Sн creo una variable ocupa X bits.
Si la creo 300 veces y ocupa 10 bits de promedio, tendrй mas de 3000 bits.
Pero sн la creo una vez afuera de todo cуdigo, con un peso equivalente a 2000 bits(cosa de usar esa variable como quiera, las veces que quiera), no tendrй peso extra por la cantidad de veces que esta creada.

No se si me explique o fue un intento fallido

Gracias a cada uno que respondiу. Seguirй soсando con escribir "new string" unos cuantos aсos mas...
Reply
#6

Definitivamente la segunda opciуn es mejor, veamos algunas de las razones:
  • En el primer caso a la variable global se le asigna una parte de la memoria a la hora de compilar, es decir, contribuirб al tamaсo del .amx mientras que las locales no.
  • Declarar solamente una variable global implica tener que asignarle el mayor nъmero de celdas posible para poder manejar las cadenas mбs largas que tengas en el gamemode. Esto significa que estarбs trabajando con muchas mбs celdas de las necesarias a la hora de manejar datos de menor tamaсo.
  • Siempre que accedas a una funciуn obtendrбs una cadena nueva vacнa, en lugar de acceder a una variable con datos basura.
  • Pueden darse casos en los que el script accede el mismo bъfer de datos, por ejemplo:
    PHP код:
    new g_Var[256];
    FuncionUno(val)
    {
        
    format(g_Varsizeof(g_Var), "valor %d"val);
        return 
    g_Var;
    }
    FuncionDos()
    {
        
    g_Var "Resultado - ";
        
    strcat(g_VarFuncionUno(69));
        print(
    g_Var);
        
    /* Esto deberнa imprimir "Resultado - valor 69" pero obtendremos "valor 69valor 69". */

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)