我在julia中定义了一个函数,它接受一个向量(特别是Vector{Complex128}).当我看到输出时,@code_warntype我看到变量类型被列为Any.据我所知,这可能会产生速度影响.这是代码的简单版本,例如:
function abc(h::Vector{Complex128})
a=1+2
end
Run Code Online (Sandbox Code Playgroud)
输出@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
Run Code Online (Sandbox Code Playgroud)
变量的类型h列为Any.我是朱莉娅的新手,不知道我在这里遗失了什么.这种行为似乎并不具体Vector{Complex128},我也得到了同样的行为Vector{Float64}.我在这里不正确地注释变量类型,或者这是它应该如何工作?我正在使用julia v0.6.0,如果这很重要的话.
这是因为编译器已将其优化,因此它甚至不存在.它的打印方式在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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
96 次 |
| 最近记录: |