Content deleted Content added
Undid revision 1177960743 by 2A01:5241:2A0:1800:ED1F:3F05:70C8:99A9 (talk) This page is about "Data-Oriented Design" and not "Data-Oriented Programming". |
The page is about "Data-Oriented Design", not "Data-Oriented Programming", the original post (from before feb. 2023) is the right definition of Data-Oriented Design. I can't rollback version, so that is the almost the same version from https://en.wikipedia.org/w/index.php?title=Data-oriented_design&oldid=1139739238. Tag: references removed |
||
Line 3:
{{Distinguish|Data-oriented programming}}
{{More citations needed|date=July 2020}}
In
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.
== Motives ==
▲In the context of [[computing]], data-oriented programming heavily benefits from [[program optimization|program optimizations]] motivated by efficient usage of the [[CPU cache]], often used in [[video game]] development.<ref name=gamesfromwithin>{{cite web |last=Llopis |first=Noel |date=December 4, 2009 |title=Data-oriented design |url=http://gamesfromwithin.com/data-oriented-design |url-status=live |archive-url=https://web.archive.org/web/20190423233051/http://gamesfromwithin.com/data-oriented-design |archive-date=Apr 23, 2019 |access-date=April 17, 2020 |website=Data-Oriented Design (Or Why You Might Be Shooting Yourself in The Foot With OOP)}}</ref> Proponents include Mike Acton,<ref>{{cite web|title=CppCon 2014: Mike Acton "Data-Oriented Design and C++"|website = [[YouTube]]|url=https://www.youtube.com/watch?v=rX0ItVEVjHc}}</ref> [[Scott Meyers]],<ref>{{cite web|title=code::dive conference 2014 - Scott Meyers: Cpu Caches and Why You Care|website = [[YouTube]]|url=https://www.youtube.com/watch?v=WDIkqP4JbkE}}</ref> [[Jonathan Blow]], and [[Andrew Kelley (computer programmer)|Andrew Kelley]]. The [[parallel array]] (or [[structure of arrays]]) is a commonly referenced example of one such cache-motivated data structure. It is contrasted with the ''array of structures'' typical of object-oriented designs, and eventually balanced to a structure of arrays of structures.
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 console]]s often have relatively weak [[central processing unit]]s (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 unit]]s (GPUs). For example, the 7th generation CPUs were not manufactured with modern [[out-of-order execution]] processors, but instead use [[in-order processor]]s with high clock speeds and deep [[Pipeline (computing)|pipelines]]. In addition, most types of computing systems have [[main memory]] located hundreds of [[clock cycle]]s away from the [[processing element]]s. 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 [[system bus|shared bus]], otherwise known as [[Von Neumann architecture#Von Neumann bottleneck|Von Neumann bottlenecking]]. Consequently, [[locality of reference]] methods have been used to control performance, requiring improvement of [[memory access pattern]]s 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 ==
{{Original research section|date=September 2021}}
The claim is that traditional [[object-oriented programming]] (OOP)
== See also ==
|