0Pricing
Lua Academy · Lezione

Misurare le durate

Misuri la durata dell'esecuzione del codice.

Misurare le durate è una lezione Lua Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Lua Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Lua Academy include 4 lezioni in totale.

Misurare la durata del codice

A volte è utile sapere quanto tempo ha richiesto un'attività: caricare un file, eseguire un ciclo o costruire un livello. Misurare le durate aiuta a individuare i punti più lenti e a migliorarli.

Lua offre due strumenti per farlo: os.time per misurazioni approssimative e os.clock per misurazioni precise.

Lo schema del cronometro

L'idea di base è semplice: registri l'istante prima dell'attività, esegua l'attività, registri l'istante dopo e infine sottragga i due valori.

La differenza è la durata trascorsa. Questo schema di avvio e arresto è il cuore di ogni timer.

local start = os.time()
-- work happens here
local stop = os.time()
print("Elapsed:", stop - start)

os.time è approssimativo

os.time conta i secondi interi, quindi non può rilevare durate inferiori a un secondo. Due chiamate rapide consecutive spesso mostrano una differenza pari a zero.

Per le attività brevi serve un orologio più preciso, ed è qui che entra in gioco os.clock.

local a = os.time()
local b = os.time()
print(b - a)

Conoscere os.clock

os.clock() restituisce un numero di secondi, ma in formato decimale e con una parte frazionaria. Misura il tempo di CPU utilizzato dal programma con un'elevata risoluzione.

Per questo è ideale per misurare operazioni rapide, fino a frazioni di secondo.

print(os.clock())

Misurare un ciclo

Inserisca un ciclo tra due letture di os.clock per vedere quanto tempo è rimasto in esecuzione. La differenza è il tempo trascorso, espresso in secondi.

I cicli più grandi richiedono più tempo, quindi questo è un metodo rapido per confrontare diversi approcci.

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")

Formattare il risultato

Un lungo numero decimale è difficile da leggere, quindi utilizzi string.format per mostrare un numero ordinato di cifre.

In questo caso %.3f stampa tre cifre dopo il punto, offrendo una precisione dell'ordine dei millisecondi.

local t1 = os.clock()
for i = 1, 500000 do end
local elapsed = os.clock() - t1
print(string.format("%.3f seconds", elapsed))

os.time e os.clock

Scelga lo strumento adatto. Utilizzi os.time per intervalli del mondo reale, ad esempio per sapere «quanti secondi sono trascorsi dall'accesso dell'utente».

Utilizzi os.clock per misurare le prestazioni del codice, poiché è preciso e tiene traccia del tempo di CPU anziché del tempo reale trascorso.

Una funzione timer riutilizzabile

Può racchiudere questo schema in una funzione. La funzione esegue una funzione fornita, ne misura la durata e stampa il risultato.

In questo modo la logica per la misurazione del tempo rimane in un unico punto ed è facile da riutilizzare.

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)

Differenza nell'arco di ore

Per intervalli lunghi del mondo reale, os.difftime applicato a due valori di os.time è la soluzione più chiara. Restituisce l'intervallo in secondi.

Divida per 60 per ottenere i minuti oppure per 3600 per ottenere le ore e visualizzare il risultato in modo leggibile.

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")

Visualizzare minuti e secondi

Per presentare una durata in minuti e secondi, utilizzi la divisione intera e l'operatore modulo.

// restituisce i minuti interi e % restituisce i secondi rimanenti.

local total = 145
local mins = total // 60
local secs = total % 60
print(string.format("%d:%02d", mins, secs))

Un semplice calcolo per il conto alla rovescia

Combini questi concetti per visualizzare il tempo rimanente. Sottragga l'istante attuale da quello di destinazione, quindi formatti i secondi in minuti e secondi.

In questo modo otterrà una visualizzazione chiara del conto alla rovescia.

local target = os.time() + 90
local left = os.difftime(target, os.time())
print(string.format("%d:%02d left", left // 60, left % 60))

Verifica rapida

Scelga lo strumento migliore per misurare il tempo con precisione.

Riepilogo

Per misurare una durata, legga l'orologio prima e dopo l'attività, quindi sottragga i due valori. Utilizzi os.time per intervalli del mondo reale espressi in secondi interi e os.clock per misurare con precisione il codice, anche per frazioni di secondo.

Formatti i risultati con string.format e trasformi i secondi grezzi in minuti e secondi usando // e %. Questi strumenti consentono di misurare qualsiasi cosa, da un ciclo a un'intera giornata lavorativa.

Domande Frequenti

La lezione «Misurare le durate» è gratuita?

Sì — il testo completo di «Misurare le durate» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Lua Academy, passa a CoddyKit PRO. Il corso Lua Academy include 4 lezioni in totale.

Cosa imparerò in «Misurare le durate»?

Misuri la durata dell'esecuzione del codice. Eserciti Lua Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Lua Academy?

Non è richiesta alcuna esperienza precedente. Lua Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Misurare le durate»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Lua Academy?

Sì. Ogni lezione Lua Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. os.time e os.date
  2. Formattazione delle date
  3. Aritmetica del tempo
  4. Misurare le durate
← Torna a Lua Academy