Julia Language
Typstabilitet
Sök…
Introduktion
Typinstabilitet inträffar när en variabelns typ kan ändras vid körning och därmed inte kan uttalas vid kompileringstid. Typinstabilitet orsakar ofta prestandaproblem, så att kunna skriva och identifiera typstabil kod är viktigt.
Skriv typstabil kod
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
Att tima de två funktionerna ovan visar stora skillnader i fråga om tids- och minnesallokeringar.
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)
Detta beror på sumofsins1
kod i sumofsins1
där typen av r
måste kontrolleras för varje iteration.
Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow