19.04.2012, 21:29
Optimizaзхes
Bem vindos a outro tutorial, neste tutorial irei ensinar algumas optimizaзхes que podemos fazer, deixando assim o seu cуdigo mais limpo e rбpido, lembrando que podemos diminuir o tamanho do amx, entгo vamos lб.Arrays
Normalmente quando nуs criamos arrays podemos torna-las globais ou locais, eu antigamente usava sу arrays locais, pois pensava que seria mais optimizado, mas foi ai que eu pensei, para que й que vou usar mais arrays locais sendo que eu irei usa-las mais que uma vez?Certo, entгo eu comecei a usar arrays globais.
Entгo quando й que eu devo usar arrays locais?
Simples, quando for usa-la apenas 1 vez, caso use mais que 1 vez torna-a global.
Mas entгo e as strings?
Faзa o mesmo, alias elas sгo uma array, mas sim teremos um tratamento diferente com elas, dos quais sгo:
- Mбximo de cйlulas
- Caso seja uma string para texto use no mбximo 128 caracteres.
- Caso seja para salvamento de dados vocк pode usar mais que 128, no meu caso eu uso 600 pois uso MySQL e no pawn requer uma string(query) grande.
- Globais ou Locais?
- Em caso de strings eu aconselho vocк a colocar global, ou seja, a string й usada para formatar um testo e nгo para armazenar dados o que permite vocк usar apenas uma, caso queira usar string para gravar dados ai sim poderб fazer uma local.
- Quantidade
- Em caso de strings crie apenas 1 no seu cуdigo, mas como eu disse sу em caso extremos em que vocк deseja armazenar uma string ai sim pode criar mais que 1.
Indentar
Indentar й uma coisa muito ъtil nos nossos cуdigos, cada um pode adotar o seu prуprio "estilo", a idenзгo nгo й sу obrigatуria como torna o seu cуdigo bonito e limpo, exemplo de cуdigopawn Code:
CMD:commando(playerid)
{
if(IsPlayerAdmin(playerid))
{
GivePlayerMoney(playerid,1000);
}
return 1;
}
PHP Code:
{
{
{
{
{
}
}
}
}
}
pawn Code:
CMD:commando(playerid)
return IsPlayerAdmin(playerid) ? true : (GivePlayerMoney(playerid,1000), true);
Benchmarks
As benchmarks sгo chamado os testes de velocidade, a uns tempos atras fiz um tуpico com testes de velocidade que estavam errados mas agora aprendi, as Benchmarks servem para optimizar o seu server, ou seja, vocк usarб coisas mais rбpidas e em termos de execuзгo fara com o que o seu servidor seja mais rбpido a executar certas funзхes, mas lembrando que para vocк fazer uma benchmark nгo pode ficar vendo videos, musicas ou falando com alguйm, pois a benchmark irб se alterar em microssegundos o que poderб trazer um mau resultado.
No meu caso eu uso esta benchmark feito pelo Slice que encontrei Aqui e eu uso esta:
pawn Code:
#define BENCH(%0,%1) \
for(new _i, _t = GetTickCount(), _c; _t; ) \
if(_t != GetTickCount()) \
for(_i = _t = GetTickCount(); _t; _i = GetTickCount()) \
if((_i - _t) == (%0)) \
for(_t = GetTickCount(); _t; ) \
if(_t != GetTickCount()) \
for(_i = _t = GetTickCount(); ; ++_c, _i = GetTickCount()) \
if((_i - _t) == (%0)) { \
printf(" Bench for " %1 ": executes, by average, %.2f times/ms.", floatdiv(_c, (%0))); \
_t = 0; \
break; \
} else
Vocк tambйm pode ver o tуpico feito pelo DarKiNs clicando Aqui ele mostra resultados muito uteis, sendo que podemos usar funзхes mais rapidas e fazendo que o seu cуdigo fique mais optimizado.
Entгo foi isto pessoal, espero que tenham gostado.
Crйditos
- ~BlueX
- Criador do tutorial;
- ~Garfield
- Criador do tutorial da Operaзгo ternбria;
- ~Nero_3D
- Criador do marco para a benchmark;
- ~RyDeR`
- Criador do rBitz;
- ~Shelby
- Criador do tutorial do rBitz;
- ~DarKiNs
- Criador do tуpico de optimizaзгo/benchmark;
- ~Slice
- Criador do tutorial do benchmark;