Julia Language
Type Stabilité
Recherche…
Introduction
L'instabilité de type se produit lorsque le type d' une variable peut changer à l'exécution et ne peut donc pas être déduit à la compilation. L'instabilité de type entraîne souvent des problèmes de performances. Il est donc important de pouvoir écrire et identifier un code de type stable.
Ecrire un code de type stable
function sumofsins1(n::Integer)
r = 0
for i in 1:n
r += sin(3.4)
end
return r
end
function sumofsins2(n::Integer)
r = 0.0
for i in 1:n
r += sin(3.4)
end
return r
end
La synchronisation des deux fonctions ci-dessus montre des différences majeures en termes d'allocations de temps et de mémoire.
julia> @time [sumofsins1(100_000) for i in 1:100];
0.638923 seconds (30.12 M allocations: 463.094 MB, 10.22% gc time)
julia> @time [sumofsins2(100_000) for i in 1:100];
0.163931 seconds (13.60 k allocations: 611.350 KB)
Cela est dû au code de type instable dans sumofsins1
où le type de r
doit être vérifié pour chaque itération.
Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow