Modèles d’évaluation des performances
Écrivez des micro-évaluations fiables avec os.clock et évitez les pièges courants.
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() - t0Empê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 eliminationComparer 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))
endMesures 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.
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
- Vue d’ensemble de l’architecture de LuaJIT
- Écrire du Lua adapté au JIT
- Profilage avec jit.p et perf
- Modèles d’évaluation des performances