我目前正在尝试在 Julia 中对自定义包使用预编译。主要目标是预编译利用 StaticVectors 的函数。一般来说,我想使用抽象 Real 类型作为参数,然后预编译 2D 和 3D 向量。然而,预编译对于 Real 和 AbstractFloat 等抽象类型失败,而不是专门的 Float64,我很难理解为什么。
这是一个最小的工作示例,可以更好地展示问题和我所尝试的内容:
module MWE
using StaticArrays: SVector
function f(v::SVector{D, Real}, s::Real)::SVector{D, Real} where {D}
s*v
end
println(
"precomp for (SVector{3, Real}, Real ,) ", precompile(f, (SVector{3, Real}, Real,)) ? " succeeded" : " failed", "\n",
"precomp for (SVector{3, Real}, Float64,) ", precompile(f, (SVector{3, Real}, Float64,)) ? " succeeded" : " failed", "\n"
)
end
#= REPL output after generating the package and adding StaticVectors to …Run Code Online (Sandbox Code Playgroud) julia ×1