0Pricing
Lua Academy · Lekcja

Profilowanie za pomocą jit.p i perf

Proszę profilować kod Lua za pomocą jit.p, oznaczać gorące ścieżki i ograniczać alokacje.

Profilowanie za pomocą jit.p i perf to bezpłatna lekcja Lua Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Lua Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Lua Academy zawiera 4 lekcji w sumie.

Dlaczego profilować?

Profilowanie wskazuje, które funkcje zużywają najwięcej czasu procesora. Bez profilowania wysiłki optymalizacyjne często koncentrują się na kodzie, który nie jest wąskim gardłem.

jit.p: Wbudowany profiler LuaJIT

LuaJIT zawiera jit.p — profiler próbkowania. Można go włączyć z wiersza poleceń lub wewnątrz skryptu.

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

Tryby jit.p

Tryby: "s" — próbkowanie według funkcji, "l" — próbkowanie według wiersza, "i" — wyświetlanie kodu interpretera i JIT. Zapis do pliku: "-jp=s,output.txt".

Odczytywanie danych wyjściowych jit.p

Dane wyjściowe pokazują procentowy podział czasu wykonania. Należy skupić się na kilku najważniejszych wąskich gardłach.

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

jit.dump — szczegóły śladów

require("jit.dump").on() wyświetla szczegółowy kod IR i maszynowy dla każdego skompilowanego śladu. Służy do sprawdzenia, co dokładnie skompilował JIT.

Korzystanie z Linux perf

W systemie Linux polecenie perf record -g luajit script.lua przechwytuje stosy wywołań na poziomie systemu operacyjnego. Należy połączyć je z perf report, aby uzyskać wykres płomieniowy.

Pliki map LuaJIT + perf

LuaJIT może generować pliki map symboli perf, dzięki czemu raporty perf pokazują nazwy funkcji Lua zamiast surowych adresów: luajit -jp=p script.lua.

os.clock do mikrobenchmarków

Do szybkich benchmarków należy mierzyć czas rzeczywisty za pomocą os.clock(). Operację należy powtórzyć wiele razy, aby uśrednić szum pomiarowy.

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

Izolowanie wąskich gardeł

Po profilowaniu należy wyodrębnić gorącą funkcję do minimalnego, samodzielnego benchmarku. Ułatwia to iteracyjne wprowadzanie optymalizacji i sprawdzanie ich efektów.

Wpływ GC na profilowanie

Przerwy GC są widoczne w profilowaniu jako skoki. Aby oddzielić czas działania algorytmu od czasu GC, należy wykonać pomiar przy wyłączonym GC (collectgarbage("stop")).

Najlepsze praktyki profilowania

  • Profilowanie należy wykonywać na realistycznych danych, a nie na mikrobenchmarkach.
  • Należy profilować kompilacje wydaniowe, a nie debugowe.
  • Po każdej zmianie należy wykonać pomiar przed nią i po niej.
  • Nie należy optymalizować kodu, który zajmuje <5% całkowitego czasu.

Pytanie dotyczące profilowania

Co mierzy tryb "s" funkcji jit.p?

Podsumowanie: profilowanie za pomocą jit.p i perf

Należy używać jit.p do profilowania funkcji i wierszy na poziomie Lua, jit.dump do analizy śladów JIT, a systemu Linux perf do tworzenia wykresów płomieniowych na poziomie systemu operacyjnego. Należy mierzyć, optymalizować i ponownie mierzyć.

Często zadawane pytania

Czy lekcja „Profilowanie za pomocą jit.p i perf” jest bezpłatna?

Tak — pełny tekst „Profilowanie za pomocą jit.p i perf” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Lua Academy, przejdź na CoddyKit PRO. Kurs Lua Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Profilowanie za pomocą jit.p i perf”?

Proszę profilować kod Lua za pomocą jit.p, oznaczać gorące ścieżki i ograniczać alokacje. Ćwiczysz Lua Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Lua Academy?

Nie wymagamy żadnego doświadczenia. Lua Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Profilowanie za pomocą jit.p i perf”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Lua Academy?

Tak. Każda lekcja Lua Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Przegląd architektury LuaJIT
  2. Pisanie kodu Lua przyjaznego dla JIT
  3. Profilowanie za pomocą jit.p i perf
  4. Wzorce benchmarków
← Powrót do Lua Academy