0Pricing
Lua Academy · Lección

Perfilado con jit.p y perf

Perfile código Lua con jit.p, anote las rutas críticas y reduzca las asignaciones.

Perfilado con jit.p y perf es una lección gratuita de Lua Academy en CoddyKit. Esta es la lección 3 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.

¿Por qué hacer perfiles?

El perfilado identifica qué funciones consumen más tiempo de CPU. Sin realizar un perfil, los esfuerzos de optimización suelen dirigirse por error a código que no constituye el cuello de botella.

jit.p: perfilador integrado de LuaJIT

LuaJIT incluye jit.p, un perfilador de muestreo. Actívelo desde la línea de comandos o dentro del script.

-- Command line:
luajit -jp=s script.lua
-- Or inside script:
require("jit.p").start("s")  -- sample at function level
-- ... code ...
require("jit.p").stop()

Modos de jit.p

Modos: "s" muestrea por función, "l" muestrea por línea y "i" muestra el intérprete frente a JIT. Para guardar la salida en un archivo: "-jp=s,output.txt".

Lectura de la salida de jit.p

La salida muestra un desglose porcentual del tiempo empleado. Concéntrese en los principales puntos críticos.

-- Example output:
-- 40%  mymodule.hotLoop
-- 25%  table.sort
-- 15%  string.format
-- ...

jit.dump para obtener detalles de las trazas

require("jit.dump").on() muestra el IR detallado y el código máquina de cada traza compilada. Úselo para comprender qué ha compilado realmente el JIT.

Uso de Linux perf

En Linux, perf record -g luajit script.lua captura las pilas de llamadas a nivel del sistema operativo. Combínelo con perf report para obtener un gráfico de llamas.

Archivos de mapas de LuaJIT y perf

LuaJIT puede generar archivos de mapas de símbolos para perf, de modo que los informes de perf muestren los nombres de las funciones de Lua en lugar de direcciones sin procesar: luajit -jp=p script.lua.

os.clock para microevaluaciones de rendimiento

Para realizar evaluaciones rápidas, mida el tiempo de reloj de pared con os.clock(). Repita la operación muchas veces para promediar el ruido de las mediciones.

local function bench(fn, iters)
  local t0 = os.clock()
  for _ = 1, iters do fn() end
  return (os.clock() - t0) / iters
end

Aislar los puntos críticos

Después de crear el perfil, extraiga la función crítica a una evaluación mínima e independiente. Esto facilita iterar sobre las optimizaciones y verificar las mejoras.

Impacto del GC en la creación de perfiles

Las pausas del GC aparecen como picos en el perfil. Mida con el GC desactivado (collectgarbage("stop")) para separar el tiempo del algoritmo del tiempo del GC.

Buenas prácticas para la creación de perfiles

  • Cree perfiles con datos realistas, no con microevaluaciones.
  • Cree perfiles de compilaciones de producción, no de depuración.
  • Mida antes y después de cada cambio.
  • No optimice código que tarde menos del 5 % del tiempo total.

Pregunta sobre la creación de perfiles

¿Qué mide el modo "s" de jit.p?

Resumen: creación de perfiles con jit.p y perf

Use jit.p para crear perfiles de funciones y líneas a nivel de Lua, jit.dump para inspeccionar las trazas de JIT y Linux perf para obtener gráficos de llamas a nivel del sistema operativo. Mida, optimice y vuelva a medir.

Preguntas frecuentes

¿La lección «Perfilado con jit.p y perf» es gratis?

Sí — el texto completo de «Perfilado con jit.p y perf» 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 «Perfilado con jit.p y perf»?

Perfile código Lua con jit.p, anote las rutas críticas y reduzca las asignaciones. 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 3 de 4.

¿Cuánto tiempo toma la lección «Perfilado con jit.p y perf»?

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

  1. Descripción general de la arquitectura de LuaJIT
  2. Escritura de Lua compatible con JIT
  3. Perfilado con jit.p y perf
  4. Patrones de benchmarking
← Volver a Lua Academy