I am new to data oriented design and I am currently developing a physics engine as a hobby project. I am really interested in data orinted design but I am not sure how to apply data oriented design to my physics engine. I am using Box2D as a reference and when I look at the source code, erin catto use linked list as a container for rigid bodies. The reason why he use linked list over array is stated here http://www.box2d.org/forum/vie... . When the physics engine do a broadphase collision detection, It will return a list of collider pairs that will most likely located randomly at memory. Finally, as stated by Erin catto when islands are created, the set of bodies are likely not to be contiguous in memory. From what I understand, you need something like handle so the data can be moved around in memory. Using handle over pointer will add an extra level of indirection which results in more cache miss. So is it really beneficial to store a set of rigid bodies or their components as array?