Julia Language
Стабильность типа
Поиск…
Вступление
Нестабильность типа возникает, когда тип переменной может меняться во время выполнения и, следовательно, не может быть выведен во время компиляции. Типичная нестабильность часто вызывает проблемы с производительностью, поэтому важно писать и идентифицировать стабилизирующий код код.
Создать стабильный код типа
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
Сроки выполнения вышеуказанных двух функций показывают значительные различия в распределении времени и памяти.
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)
Это происходит из-за нестабильного типа кода в sumofsins1
где тип r
должен быть проверен для каждой итерации.
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow