[Tutorial] Memуria na Otimizaзгo
#14

Quote:
Originally Posted by Bruno13
Посмотреть сообщение
Gostei do tutorial, excelente esqueleto e bom conteъdo!



Sу tem um porйm nisso, й saber quando utilizar static. Se vc for levar ao pй da letra e sempre substituir new por static, se encontrarб em um mar de problemas se estiver a declarar static em funзхes per-player, uma vez que enquanto uma funзгo estiver sendo executada, outra execuзгo pode alterar a variбvel estбtica, isso claro dependendo do que aplicar no cуdigo, e no fim irб alterar a variбvel tb para as outras execuзхes, entrando em conflito total.

Considere o seguinte cуdigo:
PHP код:
public OnPlayerConnect(playerid)
{
    
SetTimerEx("Timer"1000true"i"playerid);
}
forward Timer(playerid);
public 
Timer(playerid)
{
    static var;
    var++;
    
printf("player %d: %d"playerid, var);

O cуd acima deveria imprimir no console uma contagem de 1 em 1 seg por player, todavia, quando a mesma estiver em execuзгo para um player e outro concectar-se, o ciclo nгo serб o mesmo, pois a vбriavel estatнstica em questгo estarб sendo utilizada por duas execuзхes em repetiзгo. Isso se deve ao fato de que a variбvel estбtica nгo й resetada no fim do escopo em que й criada.

Concluindo, uma variбvel new seria o mais ideal para situaзхes como tal.
Deixe-me eu ser mais claro:

Quote:

De modo geral, sempre usem static ao invйs de news. Й sempre, sempre mais otimizado, porque por padrгo as funзхes de SAMP resetam a vбriavel

Ou seja, sу aplique static onde houver funзхes em SA:MP dentro delas, Como GetPlayerName, GetPlayerIp coisas do tipo

Caso contrбrio


PHP код:
static var; var = 0
ou

PHP код:
static var[128]; var[0] = EOS
no caso de strings. Й ainda assim mais rбpido.




Quote:
Originally Posted by XandyMello
Посмотреть сообщение
Assim й mais bonito:
pawn Код:
static stock GetName(playerid)
{
    static pName[24];
    GetPlayerName(playerid,pName,24);
    return pName;
}
Embora 'static stock GetName' tenha a mesma velocidade aparentemente de 'stock GetName' eu prefiro por ser mais bonito haha, e tmb as duas sгo globais.

A ultima vez que eu fiz teste de velocidade nesse mesmo caso entre
- Static GetName(playerid)
- stock GetName(playerid)
- GetName(playerid)

por incrнvel que pareзa, "stock GetName(playerid)" deu alguns 'ms' mais rбpido, sу que bem pouco. Agora nгo sei lhe falar se й realmente mais rбpido.

pawn Код:
#include <a_samp>

stock Velocidade()
{
    return 10;
}
/*Velocidade()
{
    return 10;
}
static stock Velocidade()
{
    return 10;
}
*/

#define maxloop     (100000)   //loops para teste

public OnGameModeInit()
{
    //==========================================================================

    new
        bCount = GetTickCount();
    for(new i; i < maxloop; ++i)
    {
        printf("Is %d",Velocidade());
    }
    printf("[Velocidade] Functions: %d - Temp: %d",maxloop,(GetTickCount()  - bCount));

//==========================================================================

    return true;
}
=> Cуdigo de velocidade do ipsBruno <=

De qual quer forma, tutorial muito bem organizado, parabйns arakuta.

Boa noite Xandy

No caso de static stock й possнvel sim... Stock й para nгo der warnings na hora de compilar de "funзao X nгo foi usada. Te obrigando a usar "#pragma unused FUNCAO". E static nesse caso nгo tem utilidade alguma senгo encher mais o cуdigo NESTE CASO .. Por isto deu alguns segundos mais lentos. E outra coisa. Static nгo se usa fora de escopo, й desnecessбrio. Uma vez que toda variбvel fora de escopo й global por si sу e nгo sгo redeclaradas


Com relaзгo ao uso de stock nгo tem utilidade nenhuma. Sу usam para nгo ficar dando warnings chatos no operador. Й sempre melhor deixar a funзгo limpa por si sу que й mais rбpido. Apesar de feio

pawn Код:
bruno() { return true ; }
Leia: https://sampforum.blast.hk/showthread.php?tid=570635


E outra coisa. Stock й serve pra arrays e variaveis tambйm

PHP код:
stock var ;
var = 
1;
printf("%d', var);
vai imprimir 1 
Sobre otimizaзгo de stocks. Sempre use CONST. Afinal, uma funзгo й imutбvel, ela sempre permanece seu valor constante. Portanto й stock const para uma melhor eficiencia de memуria.

Leia no final deste tutorial: https://sampforum.blast.hk/showthread.php?tid=216730


Abraзo
Reply


Messages In This Thread
Memуria na Otimizaзгo - by arakuta - 19.08.2016, 18:22
Re: Memуria na Otimizaзгo - by WLSF - 19.08.2016, 19:07
Re: Memуria na Otimizaзгo - by F1N4L - 19.08.2016, 19:10
Re: Memуria na Otimizaзгo - by zSuYaNw - 19.08.2016, 22:29
Re: Memуria na Otimizaзгo - by arakuta - 20.08.2016, 00:48
Respuesta: Memуria na Otimizaзгo - by ipsBruno - 20.08.2016, 03:56
Re: Respuesta: Memуria na Otimizaзгo - by Dishz - 20.08.2016, 05:26
Re: Memуria na Otimizaзгo - by RiqueP - 20.08.2016, 05:28
Re: Memуria na Otimizaзгo - by matheusspohr - 21.08.2016, 01:10
Re: Memуria na Otimizaзгo - by YtZ - 22.08.2016, 01:58
Re: Memуria na Otimizaзгo - by XandyMello - 23.08.2016, 03:50
Re: Memуria na Otimizaзгo - by pWesley - 23.08.2016, 13:59
Re: Respuesta: Memуria na Otimizaзгo - by Bruno13 - 23.08.2016, 15:43
Respuesta: Re: Respuesta: Memуria na Otimizaзгo - by ipsBruno - 28.08.2016, 06:34

Forum Jump:


Users browsing this thread: 1 Guest(s)