DATA-ORIENTED DESIGN The hardware will thank you.

If you wish to submit an article, please contact for details.

Follow Data-oriented Design on Google+

Read articles on CellPerformance

Data-Oriented Design book - online beta

Data-Oriented Design book (first edition) - PDF download
This is a free resource. Feel free to read, copy, download, upload, print, burn to CD, hand to someone on a pen drive, but do not claim the work is your own, or charge anyone for the right to read the material.


Things to consider : #04 09/11/2011:15:01:23

Aliasing, what it is and how to avoid it.

AltDevBlogADay by Julien Hamaide.

Angry, Intolerant, Snarky, Patronising, and Right 09/11/2011:11:40:57

Typical C++ Bullshit: by Mike Acton

Justin Liew on Data Oriented Design 09/11/2011:10:23:33

A brain dump on data-oriented design, many pointers to things to keep in mind and some top tips on the stages you go through when optimising for hardware.

Components 08/11/2011:20:55:42

This post by Michael A. Carr-Robb-John, veteran games coder presents some of his own components. Component oriented entity systems are some of the more likely patterns you'll see cropping up in data-oriented design.

Things to consider : #03 08/11/2011:14:36:12

Cache oblivious code is not ignorant, just not dependent.

So, keep in mind space filling curves and binary reflected gray code as possible access patterns to your data to maximise cache hits when you don't even know the target hardware spec.

These access patterns shuffle back and forth over similar addresses so are much more likely to hit items in the cache even without tuning for the specific platform. You trade off in readability, but it does mean that you can turn the code into a black box as even future hardware releases are likely to benefit from this design choice.

Things to consider : #02 08/11/2011:14:12:29

Most data-oriented development should consider the case for parallelism, and this talk by computer science veteran Guy Steele provides inspiration for parallelising seemingly inherently serial algorithms, and also mentions pitfalls that can cause trivially parallel operations to turn into high latency serial operations.

Who came up with the name? 08/11/2011:13:02:01

We have Noel Llopis to thank for his Game Developer article that coined the term Data-Oriented Design:

Pitfalls of Object Oriented Programming 08/11/2011:12:58:50

The Article, by Tony Albrecht that brought it to everyone's attention:

Pixeljunk Shooter 2 Lighting 08/11/2011:12:47:54

Jaymin Kessler presents two videos on PixelJunk shooter 2 fluid dynamics and SPU lighting.
PixelJunk Shooter 2 and SideScroller: Fluid And Lighting Part t 1
PixelJunk Shooter 2 and SideScroller: Fluid And Lighting Part t 2

Stop looking at the code, look at what happens to the data 08/11/2011:12:10:34

#AltDevBlogADay post from one of the internet's most helpful low level programmers, Fabian Giesen.

Things to consider : #01 08/11/2011:12:08:15

When you are looking at data, values, access patterns and the like, there are some things you need to keep in mind when building your better solutions. This seris of posts will be about things that you should keep in mind, from how to utilise the cache, to what opcodes are so slow it's actually better to have a lookup table*

Item 1: write combining:

*it's never better to have a lookup table.

Latest #AltDevBlogADay post from BitSquid 8/11/2011:12:01:07