Medir duraciones
Mida cuánto tarda en ejecutarse el código
Medir duraciones es una lección gratuita de Lua Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Lua Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Lua Academy incluye 4 lecciones en total.
Medir el tiempo de ejecución del código
A veces es necesario saber cuánto tardó una tarea: cargar un archivo, ejecutar un bucle o construir un nivel. Medir las duraciones ayuda a encontrar los puntos lentos y mejorarlos.
Lua ofrece dos herramientas para esto: os.time para mediciones aproximadas y os.clock para mediciones precisas.
El patrón del cronómetro
La idea básica es sencilla: registre el tiempo antes del trabajo, realice el trabajo, registre el tiempo después y reste ambos valores.
La diferencia es el tiempo transcurrido. Este patrón de inicio y parada es la base de todos los temporizadores.
local start = os.time()
-- work happens here
local stop = os.time()
print("Elapsed:", stop - start)os.time tiene poca precisión
os.time cuenta segundos completos, por lo que no puede detectar nada que dure menos de un segundo. Dos llamadas rápidas consecutivas suelen mostrar una diferencia de cero.
Para tareas breves necesita un reloj más preciso, y ahí es donde entra os.clock.
local a = os.time()
local b = os.time()
print(b - a)Conozca os.clock
os.clock() devuelve una cantidad de segundos, pero expresada como un número decimal con fracciones. Mide con alta resolución el tiempo de CPU utilizado por su programa.
Por eso es ideal para medir operaciones rápidas con una precisión de fracciones de segundo.
print(os.clock())Medir un bucle
Coloque un bucle entre dos lecturas de os.clock para saber cuánto tardó en ejecutarse. La diferencia es el tiempo transcurrido, expresado en segundos.
Los bucles más grandes tardan más, por lo que esta es una forma rápida de comparar distintos enfoques.
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")Dar formato al resultado
Un número decimal largo es difícil de leer, así que utilice string.format para mostrar una cantidad ordenada de posiciones decimales.
Aquí, %.3f imprime tres dígitos después del punto, lo que ofrece un nivel de detalle de milisegundos.
local t1 = os.clock()
for i = 1, 500000 do end
local elapsed = os.clock() - t1
print(string.format("%.3f seconds", elapsed))os.time frente a os.clock
Elija la herramienta adecuada. Utilice os.time para intervalos del mundo real, como «cuántos segundos han pasado desde que el usuario inició sesión».
Utilice os.clock para medir el rendimiento del código, ya que es preciso y registra el tiempo de CPU en lugar del tiempo de reloj.
Una función de temporizador reutilizable
Puede encapsular este patrón en una función. Ejecuta una función determinada, mide su duración e imprime el resultado.
Así mantiene la lógica de medición en un solo lugar y puede reutilizarla fácilmente.
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)Diferencias de varias horas
Para diferencias largas del mundo real, lo más claro es utilizar os.difftime con dos valores de os.time. Devuelve el intervalo expresado en segundos.
Divida entre 60 para obtener minutos o entre 3600 para obtener horas y mostrar el resultado de forma más clara.
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")Mostrar minutos y segundos
Para presentar una duración en minutos y segundos, utilice la división entera y el operador módulo.
// proporciona los minutos completos y % proporciona los segundos restantes.
local total = 145
local mins = total // 60
local secs = total % 60
print(string.format("%d:%02d", mins, secs))Cálculo sencillo de una cuenta regresiva
Combine estas ideas para mostrar el tiempo restante. Reste la hora actual de un objetivo y dé formato a los segundos para convertirlos en minutos y segundos.
Esto produce una visualización clara de la cuenta regresiva.
local target = os.time() + 90
local left = os.difftime(target, os.time())
print(string.format("%d:%02d left", left // 60, left % 60))Comprobación rápida
Elija la herramienta más adecuada para medir el tiempo con precisión.
Recapitulación
Para medir una duración, lea un reloj antes y después, y reste ambos valores. Utilice os.time para intervalos del mundo real expresados en segundos completos y os.clock para medir con precisión el tiempo de ejecución del código en fracciones de segundo.
Dé formato a los resultados con string.format y convierta los segundos sin procesar en minutos y segundos mediante // y %. Estas herramientas permiten medir desde un bucle hasta una jornada laboral.
Aprende Lua con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 40
- Lecciones
- 159
Preguntas frecuentes
¿La lección «Medir duraciones» es gratis?
Sí — el texto completo de «Medir duraciones» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Lua Academy, actualiza a CoddyKit PRO. El curso de Lua Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Medir duraciones»?
Mida cuánto tarda en ejecutarse el código Practicas Lua Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Lua Academy?
No se requiere experiencia previa. Lua Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Medir duraciones»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Lua Academy?
Sí. Cada lección de Lua Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- os.time y os.date
- Formatear fechas
- Aritmética temporal
- Medir duraciones