我目前有一个带有数组属性的类型
immutable foo
a::Int64
b::Int64
x::Array{Float64,1} # One dimension array of Float 64, but no length info
end
Run Code Online (Sandbox Code Playgroud)
我知道该数组将始终包含100个Float64元素.有没有办法在类型注释中传递此信息?也许类似于声明实例化数组大小的方式类似x = Array(Float64, 100)?
我想写一个以矩阵作为输入的函数.这是一个复杂项目中的频繁低级调用,因此尽可能快地使这个功能具有潜在的严重性能影响.因为速度对我来说非常重要,我正在使用类型,FixedSizeArrays因为我知道这将节省内存使用量.但我经常知道输入矩阵的某些属性,我不确定我是否正在充分利用它.
这是一个简单的例子.想象一下,我希望尽可能快地完成以下功能:
using FixedSizeArrays
function foo( input::Mat )
# NB: Mat is the FixedSizeArrays matrix type
return 2 * input
end
Run Code Online (Sandbox Code Playgroud)
显然这是一个微不足道的例子,但这不是重点.关键是我对矩阵的维度有所了解input:它总是只有两列,我总是可以在运行时指定行数.这似乎是可以传递给编译器以使我的代码更快的信息.我可以将它作为定义大小的参数传递input吗?这是一个不起作用的例子,但应该让你知道我正在尝试做什么.
function bar( int::N, thismat::Mat{N,2,Float64} )
return 2 * thismat
end
Run Code Online (Sandbox Code Playgroud)
有这样的东西我可以做吗?如果可以的话,这会发挥作用吗?也许FixedSizeArrays已经做了所有可以完成的事情.谢谢你的想法!