Criação de perfis com LuaProfiler
Instrumente o código com LuaProfiler para encontrar pontos críticos de CPU e contagens de chamadas.
Criação de perfis com LuaProfiler é uma aula grátis de Lua Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Lua Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Lua Academy inclui 4 aulas no total.
O que é o LuaProfiler?
LuaProfiler é um perfilador baseado em ganchos para Lua. Ele registra a quantidade de chamadas de cada função e o tempo acumulado gasto em cada uma, produzindo um relatório para análise de otimização.
Instalação do LuaProfiler
Disponível por meio do LuaRocks: luarocks install luaprofiler. Ou inclua o código-fonte diretamente no seu projeto.
Inicialização do perfilador
Envolva o seu código com chamadas start/stop do perfilador.
local profiler = require("profiler")
profiler.start("profile.txt") -- output to file
-- ... your code ...
profiler.stop()Leitura do relatório
O relatório mostra: nome da função, quantidade de chamadas, tempo por chamada e tempo total. Concentre-se nas funções com maior tempo total.
-- 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 msPerfilamento de caminhos de código específicos
Faça o perfilamento apenas de um subconjunto do seu código para reduzir a sobrecarga e concentrar o relatório.
profiler.start()
doExpensiveOperation()
profiler.stop()
profiler.report("expensive_op.txt")Alternativa: perfilador personalizado com debug.sethook
Crie um perfilador mínimo usando debug.sethook para coletar a quantidade de chamadas sem uma biblioteca externa.
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)
endos.clock para cronometrar funções
Cronometre funções individuais manualmente para obter comparações rápidas e direcionadas.
local function time(fn, ...)
local t = os.clock()
fn(...)
return os.clock() - t
end
print("myFunc took:", time(myFunc, arg1, arg2))jit.p para perfilamento do LuaJIT
No LuaJIT, jit.p é superior aos perfiladores baseados em ganchos para uso em produção: tem menor sobrecarga e amostragem consciente do compilador JIT.
Gráficos de chama
Gere um gráfico de chama coletando amostras da pilha. Ferramentas: lua-flameprof para PUC Lua e jit.p + FlameGraph para LuaJIT. Os gráficos de chama mostram toda a hierarquia de chamadas do uso de CPU.
Perfilamento em conjuntos de testes
Execute o perfilador dentro dos testes unitários para detectar regressões de desempenho automaticamente. Verifique por meio de asserções que as funções críticas não ultrapassem um limite de tempo.
Pontos críticos comuns
- Concatenação de cadeias de caracteres com
..em laços (use table.concat). - table.sort em tabelas grandes (considere um algoritmo mais rápido).
- Criação frequente de fechamentos.
- Cadeias profundas de __index em metatabelas.
Pergunta sobre perfilamento
O que um relatório do LuaProfiler mostra?
Recapitulação: perfilamento com LuaProfiler
Use o LuaProfiler ou um perfilador personalizado com debug.sethook para coletar a quantidade de chamadas e os tempos. Concentre-se nas funções com maior tempo total. No LuaJIT, prefira jit.p. Use gráficos de chama para visualizar a hierarquia de chamadas.
Perguntas Frequentes
A aula “Criação de perfis com LuaProfiler” é grátis?
Sim — o texto completo de “Criação de perfis com LuaProfiler” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Lua Academy, atualize para CoddyKit PRO. O curso de Lua Academy inclui 4 aulas no total.
O que vou aprender em “Criação de perfis com LuaProfiler”?
Instrumente o código com LuaProfiler para encontrar pontos críticos de CPU e contagens de chamadas. Você pratica Lua Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Lua Academy?
Nenhuma experiência prévia é necessária. Lua Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Criação de perfis com LuaProfiler”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Lua Academy?
Sim. Cada aula de Lua Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- A biblioteca debug em profundidade
- Depuração remota com MobDebug
- Criação de perfis com LuaProfiler
- Cobertura de código e instrumentação de testes