Tempo di esecuzione e misurazione

Julia intermedio

Anthony Markham

Quantitative Developer

Definizione iniziale della funzione

  • Un problema può avere più soluzioni, ma spesso c’è una soluzione “ottimale”
  • Uso eccessivo di memoria e tempi lunghi frustrano utenti e sviluppatori
  • I loop spesso causano esecuzioni lente e inefficienze
function my_function()
  x = Vector{Char}()
  for i in "Anthony"
    push!(x, i)
  end
  println(x)
end
['A', 'n', 't', 'h', 'o', 'n', 'y']
Julia intermedio

Macro base @time

  • Usiamo macro per cronometrare le funzioni.

Vantaggi:

  • Parte del pacchetto base di Julia
  • Semplice e facile da chiamare
  • Output facile da interpretare

Svantaggi:

  • Flessibilità limitata
  • Cronometra la funzione una sola volta
  • La prima chiamata include il costo di compilazione
  • Chiama la macro sulla nostra funzione
@time my_function()
@time my_function()
  • Valori restituiti

0.278266 seconds (110.66 k allocations: 6.343 MiB, 99.79% compilation time)

0.000493 seconds (100 allocations: 3.281 KiB)

Julia intermedio

BenchmarkTools - @benchmark

Perché usare @benchmark invece di @time?

  • È l’opzione più flessibile, con molti parametri da regolare, ad es. numero di samples.
  • Statistiche dettagliate di runtime (range, median, mean).
@benchmark my_function

Julia intermedio

Passiamo alla pratica !

Julia intermedio

Preparing Video For Download...