Čas provádění a měření

Intermediate Julia

Anthony Markham

Quantitative Developer

Počáteční definice funkce

  • Problémy mají často více řešení, z nichž jedno bývá 'optimální'
  • Vysoká spotřeba paměti a dlouhá doba provádění jsou zdrojem frustrace
  • Smyčky jsou častou příčinou pomalého a neefektivního kódu
function my_function()
  x = Vector{Char}()
  for i in "Anthony"
    push!(x, i)
  end
  println(x)
end
['A', 'n', 't', 'h', 'o', 'n', 'y']
Intermediate Julia

Základní makro @time

  • Funkce měříme pomocí maker.

Výhody:

  • Součást základního balíčku Julia
  • Jednoduché použití
  • Snadná interpretace výstupu

Nevýhody:

  • Omezená flexibilita
  • Funkci měří pouze jednou
  • První volání makra zahrnuje overhead kompilace
  • Volání makra na naší funkci
@time my_function()
@time my_function()
  • Vrácené hodnoty

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

0.000493 seconds (100 allocations: 3.281 KiB)

Intermediate Julia

BenchmarkTools – @benchmark

Proč použít @benchmark místo @time?

  • Nejflexibilnější volba s mnoha parametry, například počtem samples.
  • Podrobné statistiky doby běhu (rozsah, medián, průměr).
@benchmark my_function

Intermediate Julia

Pojďme si procvičit!

Intermediate Julia

Preparing Video For Download...