I've been thinking if entity iteration speed could be improved by using intels SIMD instructions. SIMD stands for Single Instruction Multiple Data and gives improved performance if tasks can be computed in parallel.
The compiler can use SIMD instructions if a loop can be "vectorized". If a loop is vectorized, it can basically do many loops in one. See more about SIMD here
Right now, entity iterations are not vectorized (I think) when using OpenEcs. Do you guys think this is doable in an ECS lib? The problem is that component data is not always after each other in memory (but sometimes they are). I'm not sure how to apply SIMD instructions for OpenEcs, or even if its possible, but it's worth looking into.
I've been thinking if entity iteration speed could be improved by using intels SIMD instructions. SIMD stands for Single Instruction Multiple Data and gives improved performance if tasks can be computed in parallel.
The compiler can use SIMD instructions if a loop can be "vectorized". If a loop is vectorized, it can basically do many loops in one. See more about SIMD here
Right now, entity iterations are not vectorized (I think) when using OpenEcs. Do you guys think this is doable in an ECS lib? The problem is that component data is not always after each other in memory (but sometimes they are). I'm not sure how to apply SIMD instructions for OpenEcs, or even if its possible, but it's worth looking into.