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