29/03/2023 11:59
(29/03/2023 11:37)hiwyn Escreveu:(29/03/2023 11:11)RodrigoMSR Escreveu: Certo.
GetTickDiff está no timer de 1 segundo, não na OnPlayerUpdate, então mesmo que seja um pouco mais lento, não vai afetar em nada. E mesmo se estivesse, ainda é melhor que usar gettime.
Benchmark:
Código:new tick = GetTickCount();
for(new i = 0; i < 2000000; i++)
{
gettime();
}
printf("gettime: %dms", GetTickCount() - tick);
tick = GetTickCount();
for(new i = 0; i < 2000000; i++)
{
GetTickDiff(GetTickCount(), tick);
}
printf("GetTickCount + GetTickDiff: %dms", GetTickCount() - tick);
Resultado (Linux):
gettime: 1676ms
GetTickCount + GetTickDiff: 87ms
No Windows a diferença é bem menor, mas no Linux foi quase 20x mais lento.
muito obrigado, melhor impossivel!
eu fiz certo a resolução pra fugir do overflow?
mais uma coisa, pensei numa parada pra deixar o onplayerupdate mais leve
Código:public OnPlayerUpdate(playerid)
{
if(updatingAFKTime[playerid] == false) {
AFKTime[playerid] = GetTickCount();
updatingAFKTime[playerid] = true;
SetTimerEx("ResetUpdatingAFKTime", 250, false, "i", playerid);
}
return true;
}
public ResetUpdatingAFKTime(playerid) {
updatingAFKTime[playerid] = false;
}
Será que é bom?
Não vejo por que usar a OnPlayerUpdate para esse tipo de coisa, já que ela é chamada milhares de vezes durante a execução do programa e um timer é bem mais otimizado para esse tipo de coisa.
Não estou disponível para realizar serviços relacionados ao SA-MP e não costumo responder a mensagens privadas, a menos que estejam relacionadas à moderação do fórum.