29/03/2023 11:37
(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?