0Pricing
Lua Academy · Aula

Medindo durações

Meça por quanto tempo o código é executado.

Medindo durações é uma aula grátis de Lua Academy no CoddyKit. Esta é a aula 4 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.

Cronometrando seu código

Às vezes, você quer saber quanto tempo uma tarefa levou: carregar um arquivo, executar um laço ou criar uma fase. Medir durações ajuda a encontrar pontos lentos e melhorá-los.

Lua oferece duas ferramentas para isso: os.time para medições aproximadas e os.clock para medições precisas.

O padrão do cronômetro

A ideia básica é simples: registre o tempo antes do trabalho, realize o trabalho, registre o tempo depois e subtraia.

A diferença é a duração transcorrida. Esse padrão de iniciar e parar é o núcleo de todo cronômetro.

local start = os.time()
-- work happens here
local stop = os.time()
print("Elapsed:", stop - start)

os.time é impreciso

os.time conta segundos inteiros, portanto não consegue detectar nada mais rápido que um segundo. Duas chamadas rápidas em sequência frequentemente mostram uma diferença igual a zero.

Para tarefas curtas, você precisa de um relógio mais preciso, e é aí que os.clock entra em cena.

local a = os.time()
local b = os.time()
print(b - a)

Conheça os.clock

os.clock() retorna uma quantidade de segundos, mas como um número decimal com frações. Ele mede o tempo de CPU usado pelo seu programa com alta resolução.

Isso o torna ideal para cronometrar operações rápidas com precisão de frações de segundo.

print(os.clock())

Medindo um laço

Coloque um laço entre duas leituras de os.clock para ver quanto tempo ele levou para ser executado. A diferença é o tempo transcorrido em segundos.

Laços maiores levam mais tempo, portanto essa é uma maneira rápida de comparar abordagens.

local t1 = os.clock()
local sum = 0
for i = 1, 1000000 do sum = sum + i end
local t2 = os.clock()
print("Took", t2 - t1, "seconds")

Formatando o resultado

Um número decimal longo é difícil de ler, portanto use string.format para exibir uma quantidade organizada de casas.

Aqui, %.3f imprime três dígitos depois do ponto, oferecendo detalhes na escala de milissegundos.

local t1 = os.clock()
for i = 1, 500000 do end
local elapsed = os.clock() - t1
print(string.format("%.3f seconds", elapsed))

os.time em comparação com os.clock

Escolha a ferramenta certa. Use os.time para intervalos do mundo real, como "quantos segundos se passaram desde que o usuário entrou".

Use os.clock para medir o desempenho do código, pois ele é preciso e acompanha o tempo de CPU, em vez do tempo transcorrido no relógio.

Uma função de cronômetro reutilizável

Você pode encapsular o padrão em uma função. Ela executa uma função fornecida, mede o tempo e imprime o resultado.

Isso mantém sua lógica de medição em um único lugar, facilitando a reutilização.

local function timeIt(fn)
  local s = os.clock()
  fn()
  print(string.format("%.4f s", os.clock() - s))
end
timeIt(function() for i=1,100000 do end end)

Diferença ao longo de horas

Para intervalos longos do mundo real, aplicar os.difftime a dois valores de os.time é mais claro. Isso retorna o intervalo em segundos.

Divida por 60 para obter minutos ou por 3600 para obter horas e apresentar o resultado de forma adequada.

local started = os.time({year=2025, month=1, day=1, hour=9})
local ended = os.time({year=2025, month=1, day=1, hour=17})
local hours = os.difftime(ended, started) / 3600
print(hours, "hours")

Exibindo minutos e segundos

Para apresentar uma duração como minutos e segundos, use divisão inteira e o operador módulo.

// fornece os minutos inteiros, e % fornece os segundos restantes.

local total = 145
local mins = total // 60
local secs = total % 60
print(string.format("%d:%02d", mins, secs))

Um cálculo simples de contagem regressiva

Combine as ideias para informar o tempo restante. Subtraia o momento atual do alvo e depois formate os segundos em minutos e segundos.

Isso produz uma exibição limpa de contagem regressiva.

local target = os.time() + 90
local left = os.difftime(target, os.time())
print(string.format("%d:%02d left", left // 60, left % 60))

Verificação rápida

Escolha a melhor ferramenta para uma medição precisa do tempo.

Recapitulação

Para medir uma duração, leia um relógio antes e depois e subtraia os valores. Use os.time para intervalos do mundo real em segundos inteiros e os.clock para medir o código com precisão de frações de segundo.

Formate os resultados com string.format e transforme segundos brutos em minutos e segundos usando // e %. Essas ferramentas permitem cronometrar qualquer coisa, desde um laço até um dia de trabalho.

Perguntas Frequentes

A aula “Medindo durações” é grátis?

Sim — o texto completo de “Medindo durações” é 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 “Medindo durações”?

Meça por quanto tempo o código é executado. 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 4 de 4.

Quanto tempo leva a aula “Medindo durações”?

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. os.time e os.date
  2. Formatando datas
  3. Aritmética de tempo
  4. Medindo durações
← Voltar para Lua Academy