Cache-Misses vermeiden: Data-Oriented Design statt Objektorientierung
Introduction to Data-Oriented Design [pdf]
Dieser Vortrag aus dem Jahr 2010 erklärt, warum objektorientierte Datenstrukturen die Performance von Spielen ausbremsen: Sie verursachen Cache-Misses und verhindern effizientes Multithreading. Der Autor zeigt anhand konkreter Codebeispiele, wie Data-Oriented Design (DOD) die Daten so anordnet, dass sie linear verarbeitet werden können. Das Ergebnis: drastisch weniger Speicherzugriffe, bessere Cache-Nutzung und eine Architektur, die sich leichter parallelisieren und testen lässt.
Ein Lesezugriff aus dem Hauptspeicher dauert bei 3,2 GHz etwa 600 Zyklen – das ist der Preis, den wir für schlechtes Datenlayout zahlen.