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