Mät varaktigheter
Mät hur länge kod körs.
Mät varaktigheter är en gratis lektion i Lua Academy på CoddyKit. Detta är lektion 4 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Lua Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Lua Academy innehåller totalt 4 lektioner.
Mät körtiden för koden
Ibland behöver man veta hur lång tid en uppgift tog: att läsa in en fil, köra en loop eller bygga en nivå. Genom att mäta tidslängder kan långsamma delar hittas och förbättras.
Lua ger två verktyg för detta: os.time för grov tidsmätning och os.clock för noggrann tidsmätning.
Stoppursmönstret
Grundidén är enkel: registrera tiden före arbetet, utför arbetet, registrera tiden efteråt och subtrahera sedan.
Skillnaden är den förflutna tidslängden. Detta start-stopp-mönster utgör grunden för alla timers.
local start = os.time()
-- work happens here
local stop = os.time()
print("Elapsed:", stop - start)os.time är grovkornigt
os.time räknar hela sekunder och kan därför inte upptäcka något som går snabbare än en sekund. Två snabba anrop efter varandra visar ofta en skillnad på noll.
För korta uppgifter behövs en noggrannare klocka, och där kommer os.clock in i bilden.
local a = os.time()
local b = os.time()
print(b - a)Möt os.clock
os.clock() returnerar ett antal sekunder, men som ett decimaltal med decimaler. Funktionen mäter den CPU-tid som programmet använder med hög upplösning.
Det gör den idealisk för att mäta snabba operationer ner till bråkdelar av en sekund.
print(os.clock())Mät en loop
Omge en loop med två avläsningar av os.clock för att se hur lång tid den kördes. Skillnaden är den förflutna tiden i sekunder.
Större loopar tar längre tid, så detta är ett snabbt sätt att jämföra olika tillvägagångssätt.
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")Formatera resultatet
Ett långt decimaltal är svårt att läsa, så använd string.format för att visa ett prydligt antal decimaler.
Här skriver %.3f ut tre siffror efter decimaltecknet, vilket ger detaljnivå på millisekunder.
local t1 = os.clock()
for i = 1, 500000 do end
local elapsed = os.clock() - t1
print(string.format("%.3f seconds", elapsed))os.time kontra os.clock
Välj rätt verktyg. Använd os.time för tidsintervall i verkligheten, till exempel "hur många sekunder sedan användaren loggade in".
Använd os.clock för att mäta kodens prestanda, eftersom den är noggrann och mäter CPU-tid i stället för väggklocktid.
En återanvändbar timerfunktion
Mönstret kan kapslas in i en funktion. Den kör en angiven funktion, mäter tiden och skriver ut resultatet.
På så sätt hålls tidsmätningslogiken samlad och blir enkel att återanvända.
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)Skillnad över flera timmar
För långa tidsintervall i verkligheten är os.difftime med två os.time-värden tydligast. Funktionen returnerar intervallet i sekunder.
Dividera med 60 för minuter eller med 3600 för timmar för att visa resultatet på ett lättöverskådligt sätt.
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")Visa minuter och sekunder
Om en tidslängd ska visas som minuter och sekunder används heltalsdivision och modulooperatorn.
// ger hela minuter och % ger de sekunder som blir över.
local total = 145
local mins = total // 60
local secs = total % 60
print(string.format("%d:%02d", mins, secs))En enkel nedräkningsberäkning
Kombinera idéerna för att visa återstående tid. Subtrahera nu från ett mål och formatera sedan sekunderna till minuter och sekunder.
Det ger en tydlig nedräkning.
local target = os.time() + 90
local left = os.difftime(target, os.time())
print(string.format("%d:%02d left", left // 60, left % 60))Snabb kontroll
Välj det bästa verktyget för noggrann tidsmätning.
Sammanfattning
För att mäta en tidslängd läser man av en klocka före och efter och subtraherar sedan. Använd os.time för tidsintervall i hela sekunder i verkligheten och os.clock för noggrann tidsmätning av kod med bråkdelar av sekunder.
Formatera resultaten med string.format och omvandla råa sekunder till minuter och sekunder med // och %. Med dessa verktyg kan allt från en loop till en arbetsdag tidsmätas.
Lär dig Lua med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 40
- Lektioner
- 159
Vanliga frågor
Är lektionen ”Mät varaktigheter” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Lua Academy, inklusive ”Mät varaktigheter”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Lua Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Mät varaktigheter”?
Mät hur länge kod körs. Ni övar på Lua Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Lua Academy?
Du behöver inga förkunskaper. Utbildningen i Lua Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.
Hur lång tid tar lektionen ”Mät varaktigheter”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Lua Academy-lektionen?
Ja. Varje Lua Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- os.time och os.date
- Formatera datum
- Tidaritmetik
- Mät varaktigheter