Data-oriented design

This is an old revision of this page, as edited by Fmadd (talk | contribs) at 16:45, 12 June 2016. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

In computing, Data oriented design (not to be confused with data-driven design) is a software optimisation approach motivated by cache coherency, used in video game development. The approach is to focus on the data layout, separating and sorting fields according to when they are needed, and to think about transformations of data.

These techniques became especially popular during the PS3 and xbox 360 console generation when the hazards of cache misses became pronounced due to their use of in-order processors and high clock speeds.[1]

Proponents include Mike Acton.

Contrast with OOP

The claim is that traditional object-oriented design principles result in poor data locality, especially if runtime polymorphism is used (which itself is especially problematic on certain processors). Although OOP does on the surface seem to 'organise code around data', the practice is quite different. OOP is actually about organising source code around data types, rather than making the layout of individual fields and arrays convenient for specific functions. It also frequently hides layout details under abstraction layers, whilst a data-oriented programmer wants to think about this first and foremost.



See also

  1. ^ "data oriented design" (PDF).