AFAIK, for most cases, a struct of arrays is the most performant, because it will be easier for the compiler to do SIMD.
While one sometimes has arrays of structs as the result of some calculation, it can be useful to convert this datastructure. For this there is the package StructArrays
Note that if you have an array of mutable structs, this is very likely to be slow in particular, because it might be that each element of this array will live at a different location in memory.