Julia Language
Type stabiliteit
Zoeken…
Invoering
Type-instabiliteit treedt op wanneer het type van een variabele tijdens runtime kan veranderen en dus niet kan worden afgeleid tijdens het compileren. Type-instabiliteit veroorzaakt vaak prestatieproblemen, dus het is belangrijk om typestabiele code te kunnen schrijven en identificeren.
Schrijf typestabiele code
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
De timing van de bovenstaande twee functies vertoont grote verschillen in tijd en geheugentoewijzingen.
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)
Dit komt door de type-instabiele code in sumofsins1
waarbij het type r
voor elke iteratie moet worden gecontroleerd.
Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow