[Ajuda] Como se faz?
#1

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.
Reply
#2

WTF?
Reply
#3

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

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

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
Reply
#5

Valeu, vou testar mais tarde!
Reply
#6

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).
Reply
#7

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 '-' ...
Reply
#8

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 '-'
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)