Temps d'exécution et mesure

Julia intermédiaire

Anthony Markham

Quantitative Developer

Définition initiale de la fonction

  • Un problème a souvent plusieurs solutions, mais il existe souvent une solution « optimale »
  • Une forte utilisation de mémoire et des temps d'exécution longs frustrent autant les utilisateurs que les développeurs
  • Les boucles causent souvent des exécutions plus longues et de l'inefficacité
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 intermédiaire

Macro de base @time

  • Nous utilisons des macros pour chronométrer nos fonctions.

Avantages :

  • Incluses dans le paquet de base de Julia
  • Simples et faciles à appeler
  • Sortie facile à interpréter

Inconvénients :

  • Souplesse limitée
  • N'effectue le chronométrage qu'une seule fois
  • Le premier appel a une surcharge de compilation
  • Appelez la macro sur notre fonction
@time my_function()
@time my_function()
  • Valeurs renvoyées

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

0.000493 seconds (100 allocations: 3.281 KiB)

Julia intermédiaire

BenchmarkTools - @benchmark

Pourquoi utiliser @benchmark plutôt que @time ?

  • L'option la plus souple, avec de nombreux paramètres à ajuster, comme le nombre de samples.
  • Statistiques détaillées d'exécution (étendue, médiane, moyenne).
@benchmark my_function

Julia intermédiaire

Passons à la pratique !

Julia intermédiaire

Preparing Video For Download...