To install click the Add extension button. That's it.

The source code for the WIKI 2 extension is being checked by specialists of the Mozilla Foundation, Google, and Apple. You could also do it yourself at any point in time.

4,5
Kelly Slayton
Congratulations on this excellent venture… what a great idea!
Alexander Grigorievskiy
I use WIKI 2 every day and almost forgot how the original Wikipedia looks like.
Live Statistics
English Articles
Improved in 24 Hours
Added in 24 Hours
Languages
Recent
Show all languages
What we do. Every page goes through several hundred of perfecting techniques; in live mode. Quite the same Wikipedia. Just better.
.
Leo
Newton
Brights
Milds

Data-oriented design

From Wikipedia, the free encyclopedia

In computing, data-oriented design is a program optimization approach motivated by efficient usage of the CPU cache, often used in video game development.[1] 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. Proponents include Mike Acton,[2] Scott Meyers,[3] and Jonathan Blow.

The parallel array (or structure of arrays) is the main example of data-oriented design. It is contrasted with the array of structures typical of object-oriented designs.

The definition of data-oriented design as a programming paradigm can be seen as contentious as many believe that it can be used side by side with another paradigm,[4] but due to the emphasis on data layout, it is also incompatible with most other paradigms. [1]

YouTube Encyclopedic

  • 1/3
    Views:
    6 819
    289 345
    149 495
  • Chris Delay's Fail Masterclass #3 - Megaprocessor
  • Sega Game Coding in Assembly - Computerphile
  • GUI Programming Introduction - Computerphile

Transcription

Motives

These methods became especially popular in the mid to late 2000s during the seventh generation of video game consoles that included the IBM PowerPC based PlayStation 3 (PS3) and Xbox 360 consoles. Historically, game consoles often have relatively weak central processing units (CPUs) compared to the top-of-line desktop computer counterparts. This is a design choice to devote more power and transistor budget to the graphics processing units (GPUs). For example, the 7th generation CPUs were not manufactured with modern out-of-order execution processors, but instead use in-order processors with high clock speeds and deep pipelines. In addition, most types of computing systems have main memory located hundreds of clock cycles away from the processing elements. Furthermore, as CPUs have become faster alongside a large increase in main memory capacity, there is massive data consumption that increases the likelihood of cache misses in the shared bus, otherwise known as Von Neumann bottlenecking. Consequently, locality of reference methods have been used to control performance, requiring improvement of memory access patterns to fix bottlenecking. Some of the software issues were also similar to those encountered on the Itanium, requiring loop unrolling for upfront scheduling.

Contrast with object orientation

The claim is that traditional object-oriented programming (OOP) design principles result in poor data locality,[5][6] more so if runtime polymorphism (dynamic dispatch) is used (which is especially problematic on some processors).[7][1] Although OOP appears to "organise code around data", it actually organises source code around data types rather than physically grouping individual fields and arrays in an efficient format for access by specific functions. Moreover, it often hides layout details under abstraction layers, while a data-oriented programmer wants to consider this first and foremost.

See also

References

  1. ^ a b c Llopis, Noel (December 4, 2009). "Data-oriented design". Data-Oriented Design (Or Why You Might Be Shooting Yourself in The Foot With OOP). Retrieved April 17, 2020.
  2. ^ "CppCon 2014: Mike Acton "Data-Oriented Design and C++"". YouTube.
  3. ^ "code::dive conference 2014 - Scott Meyers: Cpu Caches and Why You Care". YouTube.
  4. ^ Richard Fabian (October 8, 2018). "Data-Oriented Design". www.dataorienteddesign.com. Retrieved 2023-12-20.
  5. ^ "INTEL ® HPC DEVELOPER CONFERENCE FUEL YOUR INSIGHT IMPROVE VECTORIZATION EFFICIENCY USING INTEL SIMD DATA LAYOUT TEMPLATE (INTEL SDLT)" (PDF).
  6. ^ Holger Homann; Francois Laenen (2018). "SoAx: A generic C++ Structure of Arrays for handling particles in HPC codes". Computer Physics Communications. 224: 325–332. arXiv:1710.03462. Bibcode:2018CoPhC.224..325H. doi:10.1016/j.cpc.2017.11.015. S2CID 2878169.
  7. ^ "What's wrong with Object-Oriented Design? Where's the harm in it?".describes the problems with virtual function calls, e.g., i-cache misses
This page was last edited on 2 May 2024, at 04:21
Basis of this page is in Wikipedia. Text is available under the CC BY-SA 3.0 Unported License. Non-text media are available under their specified licenses. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc. WIKI 2 is an independent company and has no affiliation with Wikimedia Foundation.