Julia Language
Typ Stabilität
Suche…
Einführung
Typinstabilität tritt auf, wenn der Typ einer Variablen zur Laufzeit geändert werden kann und daher nicht zur Kompilierzeit abgeleitet werden kann. Typinstabilität verursacht häufig Leistungsprobleme, daher ist es wichtig, typstabilen Code schreiben und identifizieren zu können.
Schreiben Sie typstabilen 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
Das Timing der beiden oben genannten Funktionen zeigt wesentliche Unterschiede hinsichtlich der Zeit- und Speicherzuordnung.
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)
Dies liegt an dem Typ-instabilen Code in sumofsins1
bei dem der Typ von r
für jede Iteration überprüft werden muss.
Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow