Czas wykonania i pomiar

Julia średnio zaawansowana

Anthony Markham

Quantitative Developer

Wstępna definicja funkcji

  • Problemy mają wiele rozwiązań, ale jedno z nich jest zazwyczaj optymalne
  • Duże zużycie pamięci i długi czas wykonania frustruje użytkowników i programistów
  • Pętle są częstą przyczyną niskiej wydajności i długiego czasu wykonania
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 średnio zaawansowana

Makro bazowe @time

  • Do mierzenia czasu funkcji używamy makr.

Zalety:

  • Część pakietu bazowego Julii
  • Proste i łatwe w użyciu
  • Wyniki łatwe do interpretacji

Wady:

  • Ograniczona elastyczność
  • Mierzy funkcję tylko raz
  • Pierwsze wywołanie makra ma narzut kompilacji
  • Wywołanie makra na naszej funkcji
@time my_function()
@time my_function()
  • Zwracane wartości

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

0.000493 seconds (100 allocations: 3.281 KiB)

Julia średnio zaawansowana

BenchmarkTools - @benchmark

Dlaczego @benchmark zamiast @time?

  • Najbardziej elastyczna opcja – wiele parametrów do dostosowania, np. liczba samples.
  • Szczegółowe statystyki czasu wykonania (zakres, mediana, średnia).
@benchmark my_function

Julia średnio zaawansowana

Czas na ćwiczenia!

Julia średnio zaawansowana

Preparing Video For Download...