You can have it all: abstraction and good cache performance
Juliana Franco, Martin Hagelin, Tobias Wrigstad, Sophia Drossopoulou, Susan Eisenbach · 2017
On current architectures, the optimisation of an application's performance often involves data being stored according to access affinity --- what is accessed together should be stored together, rather than logical affinity --- what belongs together logically stays together. Such low level techniques lead to faster, but more error prone code, and end up tangling the program's logic with low-level data layout details.