Lua Academy · Leçon

Modèles d’évaluation des performances

Écrivez des micro-évaluations fiables avec os.clock et évitez les pièges courants.

Leçon 4 sur 413 étapes

Modèles d’évaluation des performances est une leçon Lua Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Lua Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Lua Academy comprend 4 leçons au total.

Pourquoi effectuer des mesures de performance ?

Les petits tests de performance mesurent les performances d’un extrait de code précis, de manière isolée. Ils permettent de vérifier qu’une optimisation améliore réellement la vitesse, sans se fier à l’intuition.

Modèle de test de performance de base

Placez le code dans une boucle, mesurez le temps réel écoulé avec os.clock(), puis divisez-le par le nombre d’itérations.

local N = 1e6
local t0 = os.clock()
for i = 1, N do
  -- code to benchmark
end
local elapsed = os.clock() - t0
print(("%.2f ns/op"):format(elapsed / N * 1e9))

Passe d’échauffement

Effectuez une passe d’échauffement avant la mesure pour laisser LuaJIT compiler les traces. Sans échauffement, la première exécution mesurée inclut le coût de compilation du JIT.

for i = 1, 1000 do hotFunction(i) end  -- warm up
local t0 = os.clock()
for i = 1, N do hotFunction(i) end
local elapsed = os.clock() - t0

Empêcher la suppression du code inutilisé

Le JIT peut supprimer les calculs dont les résultats ne sont pas utilisés. Accumulez les résultats dans une variable pour que le test de performance reste représentatif.

local sum = 0
for i = 1, N do sum = sum + math.sin(i) end
print(sum)  -- prevent elimination

Comparer deux approches

Mesurez des implémentations différentes dans des conditions identiques. Exécutez-les en alternance ou plusieurs fois pour réduire le bruit dû à la planification du système d’exploitation.

local function approach1() -- ...
end
local function approach2() -- ...
end
local function bench(fn, n)
  local t = os.clock()
  for _ = 1, n do fn() end
  return os.clock() - t
end
print("A:", bench(approach1, 1e5))
print("B:", bench(approach2, 1e5))

Analyse statistique

Exécutez le test de performance plusieurs fois et calculez les valeurs minimale, maximale et médiane. Les valeurs aberrantes dues aux pauses du GC ou à la planification du système d’exploitation doivent être écartées.

Mesurer la mémoire

Mesurez les allocations mémoire en parallèle du temps d’exécution.

collectgarbage("collect")
local mem0 = collectgarbage("count")
-- ... run operation ...
collectgarbage("collect")
local mem1 = collectgarbage("count")
print(("Memory delta: %.1f KB"):format(mem1 - mem0))

Éviter les interférences du GC

Arrêtez le GC avant la mesure afin de mesurer le temps de calcul pur. Réactivez-le ensuite.

collectgarbage("stop")
local t0 = os.clock()
for i = 1, N do -- ... end
print(os.clock() - t0)
collectgarbage("restart")

Tests réalistes et petits tests de performance

Les petits tests de performance optimisent de courts extraits, mais peuvent ne pas refléter les performances en conditions réelles. Validez toujours les améliorations avec le profilage de l’application complète.

Utilitaires de mesure de performance

Créez un utilitaire réutilisable benchmark(name, fn, iters) qui affiche des résultats cohérents et formatés pour tous vos tests de performance.

local function benchmark(name, fn, iters)
  iters = iters or 1e5
  for _ = 1, iters // 10 do fn() end  -- warm up
  local t = os.clock()
  for _ = 1, iters do fn() end
  local ns = (os.clock() - t) / iters * 1e9
  print(("%-30s %8.1f ns/op"):format(name, ns))
end

Mesures de performance dans l’intégration continue

Exécutez les tests de performance dans l’intégration continue pour détecter les régressions de performances. Déclenchez une alerte si les performances d’un test se dégradent de plus d’un seuil défini (par exemple, 10 %).

Question sur les tests de performance

Pourquoi une passe d’échauffement est-elle importante lors de la mesure des performances d’un code LuaJIT ?

Récapitulatif : modèles de mesure de performance

Utilisez une passe d’échauffement, empêchez la suppression du code inutilisé en utilisant les résultats, mesurez avec os.clock(), contrôlez le GC et effectuez plusieurs essais pour obtenir des mesures stables. Créez un utilitaire réutilisable de mesure de performance pour assurer la cohérence.

Gratuit pour commencer

Apprends Lua avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
40
Leçons
159

Questions Fréquemment Posées

La leçon « Modèles d’évaluation des performances » est-elle gratuite ?

Oui — le texte complet de « Modèles d’évaluation des performances » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Lua Academy, passe à CoddyKit PRO. Le cours Lua Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Modèles d’évaluation des performances » ?

Écrivez des micro-évaluations fiables avec os.clock et évitez les pièges courants. Tu pratiques Lua Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Lua Academy ?

Aucune expérience préalable n'est requise. Lua Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Modèles d’évaluation des performances » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Lua Academy ?

Oui. Chaque leçon Lua Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Vue d’ensemble de l’architecture de LuaJIT
  2. Écrire du Lua adapté au JIT
  3. Profilage avec jit.p et perf
  4. Modèles d’évaluation des performances
← Retour à Lua Academy