SA-MP Forums Archive
[Ajuda] Como se faz? - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+---- Thread: [Ajuda] Como se faz? (/showthread.php?tid=635371)



Como se faz? - Dragonic - 06.06.2017

Entгo, volta e meia vejo quando alguйm publica script, include ou seja o que for falando que й X tгo mais rбpido que Y mйtodo baseado em Z benchmark.

Eu sou meio cabaзгo em Pawn e logo pretendo abrir meu server e, justo por eu ser ruim, tenho certeza que meu script nгo tб bem otimizado. Como faзo os tais benchmarks para saber o quгo ruim й a situaзгo?

Ty.


Re: Como se faz? - DarkBr - 06.06.2017

WTF?


Re: Como se faz? - ViniBorn - 06.06.2017

https://sampforum.blast.hk/showthread.php?tid=218491

https://sampforum.blast.hk/showthread.php?tid=325006


Re: Como se faz? - zCyan - 06.06.2017

Com certeza vocк quer saber como otimizar seus cуdigos certo? Blz ai vai uma base

Esse aqui й um cуdigo funcionando perfeitamente, mais pode economizar linhas em seu gamemode:

PHP код:
//Topo do gamemode
new Tutorial[MAX_PLAYERS];

//Em OnPlayerCommandText

    
if (strcmp("/teste"cmdtexttrue10) == 0)
    {
        if(
Tutorial[playerid] == 1)
        {
            
SendClientMessage(playerid,-1,"Codigo Funcionando");
            return 
1;
        }
    } 
Viu? Esse cуdigo acima estб funcionando, agora vamos economizar linhas em seu gamemode:

PHP код:
    if (strcmp("/teste"cmdtexttrue10) == 0)
    {
        if(
Tutorial[playerid] == 1) return SendClientMessage(playerid,-1,"Cуdigo Funcionando E Otimizado!");
    } 
Viu a diferenзa? й basicamente isso ae man, qualquer dъvida poste ae


Re: Como se faz? - Dragonic - 06.06.2017

Quote:
Originally Posted by ViniBorn
Посмотреть сообщение
Valeu, vou testar mais tarde!


Re: Como se faz? - MultiKill - 06.06.2017

Quote:
Originally Posted by zCyan
Посмотреть сообщение
Com certeza vocк quer saber como otimizar seus cуdigos certo? Blz ai vai uma base

Esse aqui й um cуdigo funcionando perfeitamente, mais pode economizar linhas em seu gamemode:

PHP код:
//Topo do gamemode
new Tutorial[MAX_PLAYERS];
//Em OnPlayerCommandText
    
if (strcmp("/teste"cmdtexttrue10) == 0)
    {
        if(
Tutorial[playerid] == 1)
        {
            
SendClientMessage(playerid,-1,"Codigo Funcionando");
            return 
1;
        }
    } 
Viu? Esse cуdigo acima estб funcionando, agora vamos economizar linhas em seu gamemode:

PHP код:
    if (strcmp("/teste"cmdtexttrue10) == 0)
    {
        if(
Tutorial[playerid] == 1) return SendClientMessage(playerid,-1,"Cуdigo Funcionando E Otimizado!");
    } 
Viu a diferenзa? й basicamente isso ae man, qualquer dъvida poste ae
Economia de linhas nгo significa um cуdigo optimizado, a ъnica diferenзa vai ser na velocidade da compilaзгo, mas essa velocidade й bem insignificante.

O compilador ignora espaзos e linhas, os dois cуdigos acima iram gerar um amx bem semelhantes a ъnica diferenзa й no retorno do comando que no segundo cуdigo retorna o valor retornado pela funзгo SendClientMessage, se a funзгo retornar 0 o servidor vai entender que o comando nгo existe enquanto o primeiro sempre vai retornar 1.

Um cуdigo bem optimizado significa nгo desperdiзar memoria e processamento.


Exemplo de um loop que joga processamento fora:

PHP код:
for(new iMAX_PLAYERSi++) 
Supondo que a definiзгo MAX_PLAYERS nгo seja alterada (o valor padrгo й 500) e tenha 5 jogadores online no servidor, esse loop vai rodar de 0 a 499, executando muito mais vezes do que deveria.

PHP код:
for(new iGetPlayerPoolSize(); <= ji++) 
Supondo que tenha 5 players online no servidor e o id mais alto й 5, o loop vai rodar de 0 a 5, rodando somente 6 vezes.


Exemplo de desperdнcio de memуria:

Й muito comum ver pessoas ao declararem uma array para formatar um mensagem para ser enviada para um jogador declarando arrays com cйlulas muito acima do que precisam.

PHP код:
new name[MAX_PLAYER_NAME], str[128];
GetPlayerName(playeridnamesizeof name);
format(strsizeof str"Olб %s"name);
SendClientMessage(playerid, -1str); 
No exemplo acima foi declarado a array str com 128 cйlulas, mas na formataзгo foi usado apenas 28. Jogando fora 100 cйlulas.

PHP код:
new name[MAX_PLAYER_NAME], str[MAX_PLAYER_NAME 4];
GetPlayerName(playeridnamesizeof name);
format(strsizeof str"Olб %s"name);
SendClientMessage(playerid, -1str); 
A array str foi declarada com o valor de MAX_PLAYER_NAME (24) + 4 que seria: 23 caracteres do nome + 4 caracteres da formataзгo + EOS (End of string).


Re: Como se faz? - Dragonic - 06.06.2017

Quote:
Originally Posted by zCyan
Посмотреть сообщение
Com certeza vocк quer saber como otimizar seus cуdigos certo? Blz ai vai uma base

Esse aqui й um cуdigo funcionando perfeitamente, mais pode economizar linhas em seu gamemode:

PHP код:
//Topo do gamemode
new Tutorial[MAX_PLAYERS];
//Em OnPlayerCommandText
    
if (strcmp("/teste"cmdtexttrue10) == 0)
    {
        if(
Tutorial[playerid] == 1)
        {
            
SendClientMessage(playerid,-1,"Codigo Funcionando");
            return 
1;
        }
    } 
Viu? Esse cуdigo acima estб funcionando, agora vamos economizar linhas em seu gamemode:

PHP код:
    if (strcmp("/teste"cmdtexttrue10) == 0)
    {
        if(
Tutorial[playerid] == 1) return SendClientMessage(playerid,-1,"Cуdigo Funcionando E Otimizado!");
    } 
Viu a diferenзa? й basicamente isso ae man, qualquer dъvida poste ae
Isso nгo tem nada aver com a pergunta '-' ...


Re: Como se faz? - zCyan - 06.06.2017

Quote:
Originally Posted by Dragonic
Посмотреть сообщение
Isso nгo tem nada aver com a pergunta '-' ...
Entгo nгo sei, pois nгo deu para entender quase nada que vc pergunto '-'