0Pricing
Lua Academy · Aula

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 ms

Perfilamento 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)
end

os.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

  1. A biblioteca debug em profundidade
  2. Depuração remota com MobDebug
  3. Criação de perfis com LuaProfiler
  4. Cobertura de código e instrumentação de testes
← Voltar para Lua Academy