DATA-ORIENTED DESIGN The hardware will thank you.

Follow Data-oriented Design on Google+

Read articles on CellPerformance

Data-Oriented Design book - online beta


Scott Meyers - CPU Caches and Why You care 28/02/2017:09:43:42

I was recently shown a video by Scott Meyers on CPU caches, and the first ten minutes alone seems to be a reasonable push for understanding that DOD affects all langauges, not just C++ or C.

Link to the video here for your viewing pleasure

Syntactic sugar to simplify SoA 10/09/2015:12:03:50

Manipulating data in structure of arrays format can be unweildy for some, but this post talks about making things easier for you using some simple templating to replace the manual side of iteration through the arrays.

Read here C++ encapsulation for Data-Oriented Design: performance and learn about keeping your DOD SoA approach tidier.

x86 architecture as an abstraction 26/03/2015:10:53:02

It has become more obvious to people involved in optimisation that the x86 architecture is a difficult platform to understand at the core. This is partially because of the multitude of different CPUs out there that support the instruction set, each with their different timings, but also because of this latest breed of extraordinarily out of order CPUs. Knowing what's actually going to happen in an i7 has become a near impossible task.

Read Robert Graham's post on x86 is a high-level language and try to see why it's so very difficult to grok the flow of data in these chips, and also how it's very difficult to guess what will be the best performing algorithm without doing a lot of real world tests.

Why is GNU grep so fast? 06/03/2015:15:06:44

Nice read on why grep is quick. Some simple stuff, some awesome algorithm usage, and generally the kind of thing that you might want to keep in your head for if you come across a searching pattern that is similar to grep in any way.

The perils of alignment - or how to fully utilise the cache 18/02/2015:11:23:50

A really interesting article with real world data on the potential cache misuses issues of large, 2^ aligned structures. This is another reason to be ware of keeping data in large structures rather than separate arrays. It doesn't happen much by accident, but it's the kind of thing that gets done on purpose because there were reasons in GPUs to keep things aligned, and the cargo cult goes deep with these kinds of knowledge.
How Misaligning Data Can Increase Performance 12x by Reducing Cache Misses