我在julia中定义了一个接受向量的函数(特别是Vector{Complex128}
)。当我查看@code_warntype
的输出时,我发现变量类型列为Any
。据我所知,这可能会产生速度影响。这是代码的简单版本,例如:
function abc(h::Vector{Complex128})
a=1+2
end
@code_warntype
的输出
julia> @code_warntype abc(zeros(Complex128,2))
Variables:
#self#::#abc
h::Any
a::Int64
Body:
begin
SSAValue(0) = (Base.add_int)(1, 2)::Int64
return SSAValue(0)
end::Int64
变量h
的类型列为Any
。我是朱莉娅的新手,不知道我在这里遗失了什么。此行为似乎并不特定于Vector{Complex128}
,我也会使用Vector{Float64}
获得相同的行为。我在这里不正确地注释变量类型,或者这是它应该如何工作?我正在使用julia v0.6.0,如果这很重要的话。
答案 0 :(得分:5)
这是因为编译器已对其进行了优化,因此它甚至不存在。它的打印方式在v0.6.1中已经改变得更清楚了:
julia> function abc(h::Vector{Complex128})
a=1+2
end
abc (generic function with 1 method)
julia> @code_warntype abc(zeros(Complex128,2))
Variables:
#self# <optimized out>
h <optimized out>
a <optimized out>
Body:
begin
SSAValue(0) = (Base.add_int)(1, 2)::Int64
return SSAValue(0)
end::Int64