Hi all,

I would like to announce the upcoming v0.1.0 version of StaticArrays, which 
marks a certain point of maturity in this package. Bluntly put, the goal of 
StaticArrays is to improve performance over `Base.Array` for small arrays 
and when the size of an array is a (compile-time) constant. In this case, 
many optimizations can be made, including stack-allocating the container, 
unrolling loops and writing specialized algorithms for specific sizes (e.g. 
3x3 eigendecomposition is much faster with a specialized algorithm than via 
LAPACK). A sample of speedups on 3x3 matrices of Float64 is:

Matrix multiplication            -> 8.2x speedup
Matrix multiplication (mutating) -> 3.1x speedup
Matrix addition                  -> 45x speedup
Matrix addition (mutating)       -> 5.1x speedup
Matrix determinant               -> 170x speedup
Matrix inverse                   -> 125x speedup
Matrix symmetric eigenvalue      -> 105x speedup
Matrix Cholesky decomposition    -> 23.6x speedup


There is a significant advantage in using statically sized array for 2D and 
3D geometry and similar applications where the dimensionality is small and 
known in advance.

Julia has a rich history of fixed size array packages, including 
FixedSizeArrays.jl (originally for Julia v0.4) and ImmutableArrays.jl 
(originally for Julia v0.3). Discussions (including the worry that we would 
need yet another package for Julia v0.6!) have lead the StaticArrays 
repository to be moved to the JuliaArrays github organization, 
https://github.com/JuliaArrays/StaticArrays.jl and a decision to move 
forward with this package. After discussions with Simon Danisch, we would 
like to recommend new users utilize StaticArrays, while existing users of 
FixedSizedArrays might consider porting over to StaticArrays sometime 
during the life-cycle of Julia v0.5 (of course both FixedSizeArrays and 
ImmutableArrays remain fully functional). Advantages include compatibility 
with and subtyping of `AbstractArray`, and wide range of provided array 
types, and some measurable but modest speed improvements.

Kind regards,
Andy Ferris

PS - I would love to see an announcements page on Discourse!

Reply via email to