Julia Language
Stabilność typu
Szukaj…
Wprowadzenie
Niestabilność typu występuje, gdy typ zmiennej może się zmienić w czasie wykonywania, a zatem nie można go wywnioskować w czasie kompilacji. Niestabilność typu często powoduje problemy z wydajnością, dlatego ważna jest możliwość pisania i identyfikacji kodu stabilnego dla typu.
Napisz kod stabilny dla typu
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
Synchronizacja powyższych dwóch funkcji wykazuje duże różnice pod względem przydziału czasu i pamięci.
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)
Wynika to z niestabilnego typu kodu w sumofsins1
gdzie typ r
musi być sprawdzany dla każdej iteracji.
Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow