Julia Language
Tipo de estabilidad
Buscar..
Introducción
La inestabilidad del tipo ocurre cuando el tipo de una variable puede cambiar en tiempo de ejecución, y por lo tanto no puede inferirse en tiempo de compilación. La inestabilidad de tipos a menudo causa problemas de rendimiento, por lo que es importante poder escribir e identificar códigos de tipo estable.
Escribir código de tipo estable
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 sincronización de las dos funciones anteriores muestra diferencias importantes en términos de tiempo y asignaciones de 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)
Esto se debe al código de tipo inestable en sumofsins1
donde el tipo de r
debe verificar para cada iteración.
Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow