Uitvoeringstijd en meten

Julia voor gevorderden

Anthony Markham

Quantitative Developer

Initiële functiedefinitie

  • Problemen hebben vaak meerdere oplossingen; er is vaak een ‘optimale’ oplossing
  • Groot geheugengebruik en lange runtimes frustreren gebruikers en developers
  • Lussen veroorzaken vaak langere runtimes en inefficiëntie
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 voor gevorderden

Base @time-macro

  • We gebruiken macro’s om onze functies te timen.

Voordelen:

  • Onderdeel van Julia’s base-package
  • Simpel en makkelijk aan te roepen
  • Output is makkelijk te interpreteren

Nadelen:

  • Beperkte flexibiliteit
  • Meet de functie maar één keer
  • Eerste aanroep heeft compilatie-overhead
  • Roep de macro aan op onze functie
@time my_function()
@time my_function()
  • Retourwaarden

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

0.000493 seconds (100 allocations: 3.281 KiB)

Julia voor gevorderden

BenchmarkTools - @benchmark

Waarom @benchmark in plaats van @time?

  • Meest flexibel, veel parameters om te tunen, zoals aantal samples.
  • Diepe runtime-statistiek (range, mediaan, gemiddelde).
@benchmark my_function

Julia voor gevorderden

Laten we oefenen!

Julia voor gevorderden

Preparing Video For Download...