Online release of Data-Oriented Design :
This is the free, online, reduced version. Some inessential chapters are excluded from this version, but in the spirit of this being an education resource, the essentials are present for anyone wanting to learn about data-oriented design.
Expect some odd formatting and some broken images and listings as this is auto generated and the Latex to html converters available are not perfect. If the source code listing is broken, you should be able to find the referenced source on github. If you like what you read here, consider purchasing the real paper book from here, as not only will it look a lot better, but it will help keep this version online for those who cannot afford to buy it. Please send any feedback to support@dataorienteddesign.com
Richard Fabian 2018-10-08
This is the free, online, reduced version. Some inessential chapters are excluded from this version, but in the spirit of this being an education resource, the essentials are present for anyone wanting to learn about data-oriented design.
Expect some odd formatting and some broken images and listings as this is auto generated and the Latex to html converters available are not perfect. If the source code listing is broken, you should be able to find the referenced source on github. If you like what you read here, consider purchasing the real paper book from here, as not only will it look a lot better, but it will help keep this version online for those who cannot afford to buy it. Please send any feedback to support@dataorienteddesign.com
Richard Fabian
- Contents
- Data-Oriented Design
- It's all about the data
- Data is not the problem domain
- Data and statistics
- Data can change
- How is data formed?
- The framework
- Conclusions and takeaways
- Relational Databases
- Complex state
- The framework
- Normalising your data
- Normalisation
- Operations
- Summing up
- Stream Processing
- Why does database technology matter?
- Existential Processing
- Complexity
- Debugging
- Why use an if
- Types of processing
- Don't use booleans
- Don't use enums quite as much
- Prelude to polymorphism
- Dynamic runtime polymorphism
- Event handling
- Component Based Objects
- Hierarchical Level of Detail
- Searching
- Sorting
- Optimisations
- When should we optimise?
- Feedback
- A strategy
- Tables
- Transforms
- Spatial sets
- Lazy evaluation
- Necessity
- Varying length sets
- Joins as intersections
- Data-driven techniques
- Structs of arrays
- Helping the compiler
- Reducing order dependence
- Reducing memory dependency
- Write buffer awareness
- Aliasing
- Return value optimisation
- Cache line utilisation
- False sharing
- Speculative execution awareness
- Branch prediction
- Don't get evicted
- Auto vectorisation
- Maintenance and reuse
- What's wrong?
- The harm
- Mapping the problem
- Internalised state
- Instance oriented development
- Hierarchical design vs change
- Divisions of labour
- Reusable generic code
- About this document ...
Richard Fabian 2018-10-08