Como cache misses moldam a forma como você organiza os dados?
Um miss para a memória principal custa da ordem de algumas centenas de ciclos, então uma estrutura teoricamente melhor pode perder feio para um array contíguo. Isso leva a organizar os dados de acordo com como serão percorridos — structure-of-arrays quando você acessa um campo através de muitos objetos, empacotar os campos quentes juntos, e evitar perseguir ponteiros no loop interno. False sharing é o mesmo problema invertido: duas threads escrevendo em variáveis diferentes na mesma linha de cache se serializam sobre ela, e a solução é padding até uma linha de cache.