0Pricing
Lua Academy · Leçon

Profilage avec LuaProfiler

Instrumentez le code avec LuaProfiler pour trouver les points chauds du CPU et compter les appels.

Profilage avec LuaProfiler est une leçon Lua Academy gratuite sur CoddyKit. Ceci est la leçon 3 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.

Qu'est-ce que LuaProfiler ?

LuaProfiler est un profileur Lua fondé sur des fonctions d'interception. Il enregistre le nombre d'appels de fonction et le temps cumulé passé dans chaque fonction, puis produit un rapport pour analyser les optimisations.

Installation de LuaProfiler

Il est disponible via LuaRocks : luarocks install luaprofiler. Vous pouvez aussi inclure directement le code source dans votre projet.

Démarrage du profileur

Entourez votre code d'appels start/stop du profileur.

local profiler = require("profiler")
profiler.start("profile.txt")  -- output to file
-- ... your code ...
profiler.stop()

Lecture du rapport

Le rapport présente : le nom de la fonction, le nombre d'appels, le temps par appel et le temps total. Concentrez-vous sur les fonctions dont le temps total est élevé.

-- Example report:
-- function          calls  total_time  avg_time
-- hotLoop          1000   0.850 s     0.850 ms
-- table.sort        200   0.120 s     0.600 ms
-- string.format    5000   0.090 s     0.018 ms

Profilage de chemins d'exécution spécifiques

Profilez uniquement un sous-ensemble de votre code afin de réduire la surcharge et de cibler le rapport.

profiler.start()
doExpensiveOperation()
profiler.stop()
profiler.report("expensive_op.txt")

Alternative : profileur personnalisé avec debug.sethook

Créez un profileur minimal à l'aide de debug.sethook pour recueillir le nombre d'appels sans bibliothèque externe.

local counts = {}
debug.sethook(function(event)
  if event == "call" then
    local info = debug.getinfo(2, "n")
    local name = info.name or "?"
    counts[name] = (counts[name] or 0) + 1
  end
end, "c")
-- ... run code ...
debug.sethook()
for name, count in pairs(counts) do
  print(count, name)
end

os.clock pour chronométrer les fonctions

Chronométrez manuellement les fonctions individuelles pour réaliser rapidement des mesures ciblées.

local function time(fn, ...)
  local t = os.clock()
  fn(...)
  return os.clock() - t
end
print("myFunc took:", time(myFunc, arg1, arg2))

jit.p pour le profilage LuaJIT

Avec LuaJIT, jit.p est supérieur aux profileurs fondés sur des fonctions d'interception pour une utilisation en production : sa surcharge est moindre et son échantillonnage tient compte du compilateur JIT.

Graphes de flammes

Générez un graphe de flammes en recueillant des échantillons de pile. Outils : lua-flameprof pour PUC Lua, jit.p + FlameGraph pour LuaJIT. Les graphes de flammes montrent toute la hiérarchie des appels liés à l'utilisation du CPU.

Profilage dans les suites de tests

Exécutez le profileur dans les tests unitaires afin de détecter automatiquement les régressions de performances. Vérifiez que les fonctions constituant des points chauds ne dépassent pas un seuil de temps.

Points chauds courants

  • Concaténation de chaînes avec .. dans les boucles (utilisez table.concat).
  • table.sort sur de grandes tables (envisagez un algorithme plus rapide).
  • Création fréquente de fermetures.
  • Chaînes __index profondes de métatables.

Question sur le profilage

Que présente un rapport de LuaProfiler ?

Récapitulatif : profilage avec LuaProfiler

Utilisez LuaProfiler ou un profileur personnalisé fondé sur debug.sethook pour recueillir le nombre d'appels et les temps d'exécution. Concentrez-vous sur les fonctions dont le temps total est élevé. Avec LuaJIT, préférez jit.p. Utilisez les graphes de flammes pour visualiser la hiérarchie des appels.

Questions Fréquemment Posées

La leçon « Profilage avec LuaProfiler » est-elle gratuite ?

Oui — le texte complet de « Profilage avec LuaProfiler » 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 « Profilage avec LuaProfiler » ?

Instrumentez le code avec LuaProfiler pour trouver les points chauds du CPU et compter les appels. 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 3 sur 4.

Combien de temps prend la leçon « Profilage avec LuaProfiler » ?

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. La bibliothèque debug en profondeur
  2. Débogage à distance avec MobDebug
  3. Profilage avec LuaProfiler
  4. Couverture du code et instrumentation des tests
← Retour à Lua Academy