Julia Language
Tipo di stabilità
Ricerca…
introduzione
L'instabilità del tipo si verifica quando il tipo di una variabile può cambiare in fase di esecuzione e quindi non può essere dedotto in fase di compilazione. L'instabilità del tipo spesso causa problemi di prestazioni, quindi è importante poter scrivere e identificare il codice stabile al tipo.
Scrivi un codice stabile al tipo
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
La tempistica delle due funzioni di cui sopra mostra le principali differenze in termini di tempo e allocazioni di memoria.
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)
Questo è dovuto al codice type-unstable in sumofsins1
cui il tipo di r
deve essere controllato per ogni iterazione.
Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow