Mierzenie czasu trwania
Zm ierzy Pan/Pani, jak długo wykonuje się kod.
Mierzenie czasu trwania to bezpłatna lekcja Lua Academy na CoddyKit. To lekcja 4 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.
Mierzenie czasu działania kodu
Czasami warto wiedzieć, ile czasu zajęło wykonanie zadania: wczytanie pliku, uruchomienie pętli lub zbudowanie poziomu. Mierzenie czasu trwania pomaga znaleźć wolne fragmenty i je usprawnić.
Lua udostępnia do tego dwa narzędzia: os.time do pomiarów z małą dokładnością oraz os.clock do pomiarów z dużą dokładnością.
Schemat stopera
Podstawowa idea jest prosta: zapisz czas przed wykonaniem pracy, wykonaj ją, zapisz czas po jej zakończeniu, a następnie odejmij obie wartości.
Różnica to czas, który upłynął. Ten schemat start-stop jest podstawą każdego timera.
local start = os.time()
-- work happens here
local stop = os.time()
print("Elapsed:", stop - start)os.time ma małą dokładność
os.time zlicza pełne sekundy, więc nie wykryje niczego, co trwa krócej niż sekunda. Dwa szybkie wywołania jedno po drugim często dają różnicę równą zero.
Do krótkich zadań potrzebny jest dokładniejszy zegar — właśnie do tego służy os.clock.
local a = os.time()
local b = os.time()
print(b - a)Poznaj os.clock
os.clock() zwraca liczbę sekund, ale w postaci dziesiętnej, wraz z częścią ułamkową. Z dużą dokładnością mierzy czas procesora wykorzystany przez program.
Dzięki temu doskonale nadaje się do mierzenia szybkich operacji z dokładnością do ułamków sekundy.
print(os.clock())Mierzenie czasu pętli
Umieść pętlę między dwoma odczytami os.clock, aby sprawdzić, jak długo trwało jej wykonanie. Różnica to czas, który upłynął, wyrażony w sekundach.
Większe pętle wykonują się dłużej, dlatego jest to szybki sposób na porównywanie różnych rozwiązań.
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")Formatowanie wyniku
Długa liczba dziesiętna jest trudna do odczytania, dlatego użyj string.format, aby wyświetlić uporządkowaną liczbę miejsc po przecinku.
W tym przypadku %.3f wyświetla trzy cyfry po kropce, zapewniając dokładność na poziomie milisekund.
local t1 = os.clock()
for i = 1, 500000 do end
local elapsed = os.clock() - t1
print(string.format("%.3f seconds", elapsed))os.time a os.clock
Wybierz odpowiednie narzędzie. Użyj os.time do pomiaru rzeczywistych przedziałów czasu, na przykład „ile sekund minęło od zalogowania się użytkownika”.
Użyj os.clock do mierzenia wydajności kodu, ponieważ zapewnia dużą dokładność i śledzi czas procesora, a nie czas zegarowy.
Wielokrotnego użytku funkcja timera
Możesz umieścić ten schemat w funkcji. Uruchamia ona przekazaną funkcję, mierzy czas jej działania i wyświetla wynik.
Dzięki temu logika pomiaru czasu znajduje się w jednym miejscu i można ją łatwo ponownie wykorzystać.
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)Różnica obejmująca godziny
W przypadku długich rzeczywistych przedziałów czasu najbardziej przejrzyste jest użycie os.difftime dla dwóch wartości os.time. Funkcja zwraca długość tego przedziału w sekundach.
Podziel wynik przez 60, aby otrzymać minuty, albo przez 3600, aby otrzymać godziny i wyświetlić go w czytelnej formie.
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")Wyświetlanie minut i sekund
Aby przedstawić czas trwania w minutach i sekundach, użyj dzielenia całkowitego oraz operatora modulo.
// zwraca pełne minuty, a % zwraca pozostałe sekundy.
local total = 145
local mins = total // 60
local secs = total % 60
print(string.format("%d:%02d", mins, secs))Proste obliczanie odliczania
Połącz poznane koncepcje, aby wyświetlić pozostały czas. Odejmij chwilę obecną od czasu docelowego, a następnie sformatuj sekundy jako minuty i sekundy.
W ten sposób uzyskasz przejrzysty wyświetlacz odliczania.
local target = os.time() + 90
local left = os.difftime(target, os.time())
print(string.format("%d:%02d left", left // 60, left % 60))Szybki test
Wybierz najlepsze narzędzie do dokładnego pomiaru czasu.
Podsumowanie
Aby zmierzyć czas trwania, odczytaj zegar przed i po wykonaniu operacji, a następnie odejmij obie wartości. Używaj os.time do pomiaru rzeczywistych przedziałów czasu z dokładnością do pełnych sekund, a os.clock do dokładnego mierzenia czasu działania kodu, także z częścią ułamkową.
Formatuj wyniki za pomocą string.format, a surowe sekundy zamieniaj na minuty i sekundy przy użyciu // oraz %. Te narzędzia pozwalają mierzyć czas wszystkiego — od pętli po cały dzień pracy.
Często zadawane pytania
Czy lekcja „Mierzenie czasu trwania” jest bezpłatna?
Tak — pełny tekst „Mierzenie czasu trwania” 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 „Mierzenie czasu trwania”?
Zm ierzy Pan/Pani, jak długo wykonuje się kod. Ć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 4 z 4.
Ile czasu zajmuje lekcja „Mierzenie czasu trwania”?
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
- os.time i os.date
- Formatowanie dat
- Operacje na czasie
- Mierzenie czasu trwania