Les langages Optimisation FiveM Ce que coûte une boucle
Lire une fois, s'en servir plusieurs
GetEntityCoords, PlayerPedId, GetVehiclePedIsIn... Ces fonctions, les
natives, franchissent la frontière entre Lua et le moteur du jeu. Chaque
appel coûte plus cher qu'une simple lecture de variable.
Le travers classique
for _, point in ipairs(POINTS) do
if #(GetEntityCoords(PlayerPedId()) - point) < 10.0 then
-- ...
end
end
Avec trois points, la position du joueur est lue trois fois -- et
PlayerPedId appelé trois fois -- alors qu'elle ne change pas pendant ce tour
de boucle. Avec cinquante points, cinquante fois.
La correction
local pos = GetEntityCoords(PlayerPedId()) -- une fois par tour
for _, point in ipairs(POINTS) do
if #(pos - point) < 10.0 then
-- ...
end
end
La position est lue une fois par tour de boucle : ni plus (gaspillage), ni moins. La lire une seule fois avant la boucle serait l'excès inverse : le joueur se déplace, et le script travaillerait sur une position périmée.
1 exercice pour cette lecon
Les exercices demandent un compte : il faut bien enregistrer votre progression quelque part. La lecture, elle, reste libre. Creer un compte
-
Une seule lecture par tour facile lecon a valider