Fact-checked by Grok 2 weeks ago

Data-oriented design

Data-oriented design (DOD) is a that prioritizes the , patterns, and of to optimize on modern hardware, particularly by minimizing cache misses and enabling efficient , in contrast to object-oriented design's focus on encapsulating within objects. The approach treats as a series of transformations, where understanding the type, frequency, quantity, shape, and probability of usage guides implementation decisions to align with hardware constraints like and instruction throughput. The term "data-oriented design" was coined by Noel Llopis in a 2009 article, building on earlier practices in , and gained prominence through talks by industry experts such as Mike Acton, Engine Director at , who emphasized in his 2014 CppCon presentation that all software problems are fundamentally data problems requiring hardware-aware solutions. Proponents like Acton and Richard Fabian argue that DOD emerged from the needs of game development, where processing large volumes of similar data entities—such as particles or animations—demands predictable memory access over abstract modeling. At its core, advocates decomposing complex entities into simple, homogeneous data structures, such as structure-of-arrays (SoA) instead of array-of-structures (AoS), to group related data contiguously in for by algorithms that iterate over entire datasets rather than individual objects. This shifts the design focus from code modularity and inheritance to data modularity, rejecting traditional object-oriented principles like encapsulation and polymorphism in favor of explicit data exposure and simple transformations that can be easily profiled and optimized. Key tenets include solving for the most common data access patterns rather than generic cases, preserving necessary data without over-engineering, and considering hardware specifics like cache line sizes (typically bytes) to reduce waste and latency. DOD's benefits include improved on multi-core processors through reduced needs, enhanced efficiency leading to significant gains in data-intensive workloads, and simpler debugging via clear input-output data flows. It is widely adopted in game engines like Unity's (ECS), where components such as position and velocity are stored in parallel arrays for systems to process en masse, and in other domains like simulations and real-time graphics. While DOD can complement other paradigms, its strict adherence to data-centric thinking often requires developers to unlearn object-oriented habits, fostering more maintainable code in performance-critical scenarios.

Fundamentals

Definition

Data-oriented design (DOD) is a software engineering approach that optimizes programs by prioritizing the layout, access patterns, and transformations of data to achieve efficient utilization of modern hardware, particularly CPU caches and memory bandwidth. This methodology views data as the primary entity driving software functionality, with code structured to process data flows in ways that align with hardware constraints and processing efficiencies. By focusing on how data is represented and manipulated rather than on procedural or object-centric abstractions, DOD enables developers to create high-performance systems, especially in resource-intensive applications like real-time simulations. Central to is the principle of designing around rather than encapsulating within objects, which allows for streamlined transformations of input into output forms. Developers organize to operate on contiguous blocks of homogeneous , facilitating sequential that minimizes overhead from scattered accesses. This data-centric perspective shifts the emphasis from individual entity behaviors to collective operations, promoting architectures where algorithms are tailored to the , , and volume of being handled. Key terminology in DOD includes data locality, which describes the arrangement of data in to ensure frequently accessed elements are stored close together, reducing in retrieval; cache lines, the fixed-size blocks (typically 64 bytes) that the CPU transfers from main to its faster , making contiguous data access crucial for ; and batch processing of homogeneous data structures, where similar data types are grouped into arrays or structures-of-arrays for efficient or vectorized operations. In contrast to object-oriented design, which bundles data and methods into objects, DOD separates concerns to optimize data traversal and transformation patterns. DOD distinguishes itself from broader data-oriented programming paradigms, which often emphasize immutable structures and functional compositions for general-purpose reliability, by concentrating on low-level performance optimizations tailored to hardware-specific behaviors in performance-critical implementations.

Core Principles

Data-oriented design emphasizes principles that prioritize efficient organization and processing to align with modern hardware constraints, such as limited sizes. A foundational principle is data locality, which involves arranging data in contiguous memory blocks to minimize cache misses and maximize the utilization of lines, typically 64 bytes on many processors. This approach ensures that frequently accessed data resides close together in memory, reducing the latency associated with fetching data from slower memory levels. A key technique for achieving data locality is the use of Structure of Arrays (SoA) instead of Array of Structures (AoS), particularly when processing groups of entities that share similar operations. In an AoS layout, data for each entity is bundled together, leading to scattered memory access when updating a single attribute across all entities; in contrast, SoA separates attributes into parallel arrays, enabling and better efficiency. The following illustrates the difference in a simple update scenario for entities, assuming is similarly structured: Array of Structures (AoS):
struct Entity {
    [float](/page/Float) [x, y](/page/X&Y), [z](/page/Z);
    [float](/page/Float) [vx](/page/VX), [vy](/page/Vy), [vz](/page/Z);
    // other fields...
};

Entity entities[1000];

for ([int](/page/INT) i = [0](/page/0); i < [1000](/page/1000); ++i) {
    entities[i].x += entities[i].[vx](/page/VX);  // Scattered [access](/page/Access): jumps in memory
    entities[i].y += entities[i].[vy](/page/Vy);
    entities[i].z += entities[i].[vz](/page/Z);
}
This AoS example results in non-contiguous memory es, increasing misses. Structure of Arrays (SoA):
float x[1000], y[1000], z[1000];
float vx[1000], vy[1000], vz[1000];

for (int i = 0; i < 1000; ++i) {
    x[i] += vx[i];  // Contiguous access: sequential reads/writes
    y[i] += vy[i];
    z[i] += vz[i];
}
The SoA layout allows the loop to traverse linearly, fitting more data into lines and enabling . Another core principle is , where similar operations on groups of data are handled in tight loops to exploit SIMD instructions and parallelism, thereby improving throughput on multi-core systems. By processing homogeneous datasets in bursts—such as updating all positions before all rotations—developers can minimize context switches and maximize hardware utilization, often yielding performance gains like 4x speedups through SIMD intrinsics. Separation of from is a guiding tenet, treating code as pure functions that transform input into output without relying on hidden state or mutable objects. This decoupling allows to be stored in simple, flat structures like arrays or tables, while is implemented as stateless operations that operate on these structures, avoiding overheads such as calls in object-oriented designs. As a result, systems become more predictable and easier to optimize, since flows explicitly from inputs to outputs. Finally, iterative refinement involves designing systems that facilitate data reorganization based on empirical profiling results, enabling continuous performance improvements. Developers profile execution to identify bottlenecks, such as frequent cache misses or uneven workloads, then adjust data layouts or processing order accordingly, re-profiling to validate changes in a feedback loop. This principle ensures that optimizations are data-driven rather than speculative, often leading to substantial reductions in processing time, as seen in cases where cache line utilization improves from poor alignment to near-optimal packing.

Historical Development

Origins

Data-oriented design emerged in the early within game development, primarily as a response to the demands for performance on increasingly complex hardware, including the seventh-generation consoles like the and launched in 2006 and 2005, respectively. These platforms featured multi-core processors and deep memory hierarchies that amplified issues like cache misses and inefficient data access in traditional programming approaches, necessitating optimizations focused on data layout and processing efficiency. The term "data-oriented design" was popularized by Noel Llopis in his September 2009 article published in Game Developer magazine, titled "Data-Oriented Design (Or Why You Might Be Shooting Yourself in the Foot with )." In this seminal piece, Llopis critiqued for its emphasis on encapsulating behavior within objects, which often led to scattered data access patterns unsuitable for performance-critical code in games. Instead, he advocated shifting focus to the data itself—its structure, memory layout, and transformation processes—to better align with hardware realities like cache utilization and parallelization. Precedents for data-oriented design can be traced to paradigms, which prioritize sequential code execution over object hierarchies, though both traditionally emphasize code over data organization. Additionally, entity-component systems (ECS) in game engines predated the formalization of data-oriented design, with early examples like the Dark Object System in Thief: The Dark Project (), which employed modular, reusable components for representing game entities without deep trees, facilitating flexible data handling. Early adopters included studios like , which applied cache-aware data management techniques in Uncharted: Drake's Fortune (2007), as detailed in their GDC 2008 presentation "Adventures in Data Compilation," emphasizing automated processing pipelines to optimize asset loading and runtime efficiency on console hardware. Similarly, Insomniac Games integrated hardware-aware design in their work during the mid-2000s, with Mike Acton noting in 2008 that understanding specifics directly shaped structures and coding choices for titles like Resistance: Fall of Man (2006).

Evolution and Adoption

In the , data-oriented design advanced through its integration with multithreading and GPU computing, leveraging the rise of multi-core processors and heterogeneous architectures to optimize data locality and parallelism. This period saw principles applied to frameworks, where structuring data for cache efficiency and SIMD instructions enabled scalable performance in compute-intensive applications. For instance, AMD's (HSA), introduced in 2012, facilitated unified memory access between CPUs and GPUs, supporting data-oriented patterns for seamless task dispatch and memory sharing in parallel workloads. Adoption in game engines marked a significant , with introducing its Data-Oriented Technology Stack (DOTS) in 2018 as a preview at the Game Developers Conference. DOTS implements entity-component-system (ECS) architecture based on , grouping data into contiguous arrays for efficient multithreading and simulation of large-scale worlds, such as handling thousands of entities without traditional object-oriented overhead. This framework enabled developers to achieve up to 100x performance gains in entity processing through Burst compilation and the Job System, driving broader experimentation in high-fidelity games. By the 2020s, expanded into (HPC) and embedded systems, where data locality and minimal overhead are critical for resource-constrained environments. In HPC, DOD patterns improved throughput in simulations and data analytics by aligning code with hardware pipelines, including in frameworks for exascale systems. In embedded contexts, languages like supported DOD through its ownership model, enforcing compile-time while enabling cache-friendly data layouts for applications, such as in automotive and IoT devices. A milestone highlights DOD's role in AI training pipelines, particularly for . Publications emphasized data-oriented architectures () in systems, where partitioning datasets across distributed nodes via tools like enables fault-tolerant, scalable training of large models. For example, a survey of 45 ML systems found that DOA principles, including shared data models and decentralized processing, enhance efficiency in handling streams, with 35% adopting local data chunking for parallel AI workloads.

Comparison with Object-Oriented Design

Architectural Differences

In (OOP), encapsulation bundles and methods within objects, promoting abstraction but often resulting in scattered memory layouts where related is distributed across multiple instances, leading to inefficient patterns. In contrast, data-oriented design (DOD) employs flat structures, such as arrays or structures-of-arrays (SoA), to organize contiguously, enabling sequential reads and writes that align with hardware cache behavior. This approach treats as raw, meaning-agnostic facts stored in cohesive collections, avoiding the hidden dependencies inherent in OOP's encapsulated objects. For instance, instead of embedding and velocity within individual object instances, DOD separates them into dedicated arrays, allowing over entire datasets. OOP relies on and polymorphism to model relationships and behaviors, where "is-a" hierarchies enable through calls, but these introduce and pointer chasing that fragment data access. DOD eschews such mechanisms in favor of , assembling entities from interchangeable components stored in shared, queryable data pools, which promotes explicit data transformations without hierarchical overhead. Polymorphism in OOP, achieved via , contrasts with DOD's static, data-driven alternatives like type-indexed tables or switch statements, reducing and enabling predictable processing flows. This compositional strategy in DOD allows flexible entity reconfiguration—such as adding or removing traits—through simple data insertions or queries, rather than subclassing or overriding methods. State management in typically involves hidden instance variables within objects, which can lead to implicit dependencies and challenges in tracking changes across distributed or concurrent systems. addresses this by making state explicit through versioned data snapshots or immutable transforms, where updates create new data views rather than modifying in-place, thereby minimizing concurrency risks like race conditions without relying on locks. These snapshots facilitate safe , as systems operate on isolated data copies, ensuring and easing by transformations as data flows. In practice, this explicitness aligns with batch-oriented principles, where state evolves predictably across iterations rather than through object mutations. Traditional design patterns, such as the , traverse object hierarchies via to apply operations, often complicating maintenance due to tight between structure and . In DOD, this shifts to data iteration over archetypes—groups of entities sharing component sets—using sparse arrays or tables to process homogeneous subsets efficiently, eliminating the need for recursive visitation. Archetypes enable archetype-based queries, where operations iterate directly over relevant chunks, fostering through data partitioning rather than behavioral . This pattern adaptation simplifies extensibility, as new behaviors emerge from reorganization, not pattern refactoring.

Performance Considerations

Data-oriented design (DOD) enhances runtime efficiency primarily through improved utilization, as data layouts like structures of arrays (SoA) promote spatial and temporal locality compared to the scattered access patterns common in (OOD) with arrays of structures (AoS). Benchmarks on particle simulations demonstrate that SoA reduces misses by 50-80% in , , and L3 caches when processing large entity counts, such as 10,000 or more particles, by enabling sequential memory access that aligns with line fetches (typically 64 bytes). For instance, in a particle on an i7, contiguous SoA layouts lowered L3 misses per 1000 instructions (MPKI) from ~15 to ~3, a of approximately 80%, while L1 and L2 misses dropped by up to 70%. These cache improvements translate to higher throughput, with achieving 2-5x s in () due to predictable patterns that minimize stalls and enable better SIMD . In game loop scenarios, such as simulating particles on processors, SoA implementations yielded at least 2-3x higher entities processed per unit time compared to AoS, with peak gains reaching 4-5x when data fits within L1/L2 s (32-256 KB). benchmarks further quantify this, showing up to 25x overall speedup on Haswell CPUs for vectorized operations on large datasets. DOD's performance scales advantageously with modern hardware, particularly multi-core CPUs and GPUs, where amplifies locality benefits; for example, on GPUs, SoA provided 2-20x speedups over AoS for particle counts exceeding 1000, leveraging coalesced global memory access. However, for small datasets under line size (e.g., fewer than 1000 entities totaling <64 bytes per operation), SoA incurs overhead from or padding, making AoS preferable as it fits entirely in L1 without fragmentation penalties. To quantify these effects, developers employ profiling tools tailored to DOD layouts, such as Intel VTune Profiler for analyzing L1/L2 hit rates and MPKI on x86 systems, or perf for event-based sampling of metrics like LLC-load-misses. These tools reveal DOD-specific gains, such as 50% lower instruction misses in entity-component-system (ECS) benchmarks versus OOD, by correlating access patterns to counters during SoA traversal.

Applications

In Game Development

In game development, data-oriented design is prominently applied through (ECS) architectures, where components serve as plain data structures organized in contiguous tables for efficient cache utilization, and systems function as parallel processors that iterate over these data batches to update game logic. This approach contrasts with traditional object-oriented hierarchies by prioritizing data locality, enabling high-performance simulations in resource-constrained environments. For instance, Unity's Data-Oriented Technology Stack (DOTS), which includes ECS, facilitates the simulation of over 100,000 agents in crowd or particle systems by leveraging Burst compilation and the Job System for multi-threaded processing. Real-time rendering pipelines in modern game engines also incorporate data-oriented principles to optimize vertex processing and minimize CPU bottlenecks. In versions released after 2018, such as UE5's Nanite virtualized system, vertex data is streamed and processed in hierarchical clusters on the GPU, significantly reducing draw call overhead by batching updates and eliminating traditional management. This allows for rendering billions of triangles with near-constant performance, as the system treats mesh data as flat arrays amenable to parallel compute shaders rather than per-object calls. For multiplayer synchronization, data-oriented design enables batch updates of player states, where , , and action data are collected into arrays and transmitted in compressed packets, compared to individual object . In Unity's for Entities, this manifests as ghost components that replicate only relevant data subsets across clients, allowing seamless synchronization for 100+ players in large-scale environments like the Megacity Metro demo while maintaining low usage.

In Other Fields

In , data-oriented design principles, particularly the use of Structure of Arrays (SoA) layouts, enhance efficiency in scientific simulations by optimizing memory access patterns for vectorized computations. For instance, in simulations employing the lattice Boltzmann method, SoA structures facilitate better cache utilization during advection steps, reducing memory bandwidth demands compared to traditional Array of Structures (AoS) approaches. This is evident in particle-based simulations where SoA enables SIMD instructions to process multiple particles simultaneously, as implemented in generic C++ frameworks for handling large-scale particle data in HPC codes. Extensions to libraries like further support this by providing array-oriented operations that align data for high-throughput numerical computations in simulations. In embedded systems, data-oriented design is applied to manage resource constraints in real-time operating systems such as , particularly for processing sensor data in devices. By organizing data into cache-friendly batches and minimizing indirection, reduces latency in handling streams from multiple sensors, enabling efficient multitasking on microcontrollers with limited memory. This approach ensures predictable performance in time-critical tasks, such as aggregating environmental data for edge analytics, without the overhead of object-oriented encapsulation. Within , data-oriented design optimizes data loaders in frameworks like by structuring batch tensors in contiguous memory layouts to maximize throughput during . The tf.data API leverages these principles through prefetching and , transforming datasets into batched formats that align with hardware accelerators, thereby reducing I/O bottlenecks and improving GPU utilization. Surveys of ML systems highlight how DOD-inspired data pipelines enhance scalability, as seen in distributed where optimized layouts prevent delays across nodes. In , particularly systems, -oriented design processes tick streams with minimal latency by prioritizing flat, sequential representations over hierarchical objects. This enables rapid aggregation and of feeds, where SoA-like structures allow for vectorized operations on time-series , critical for executing trades in microseconds. Such designs are essential in environments demanding sub-millisecond response times, as they minimize misses during assessments and matching.

Advantages and Challenges

Benefits

Data-oriented design enhances by enabling straightforward parallelism across multiple cores or , as data is organized into contiguous structures that minimize shared state and eliminate the need for locks in many operations, thereby supporting thousands of concurrent data transformations without synchronization overhead. This approach allows developers to partition input and process them independently, scaling efficiently with counts while maintaining predictable . The paradigm promotes portability by emphasizing data layouts that align with underlying memory hierarchies, such as lines and SIMD instructions, making it adaptable to diverse architectures like x86, , or emerging processors with varying sizes and coherency models. By focusing on explicit data flow rather than platform-specific , designs can be tuned for different without extensive rewrites, ensuring longevity as architectures evolve. Debugging and optimization benefit from the explicit separation of and logic, where well-defined data interfaces facilitate straightforward of patterns and hot paths using tools like simulators or counters. This transparency reduces the complexity of tracing issues in large systems, as transformations operate on uniform batches, enabling precise identification and mitigation of bottlenecks. Long-term maintainability is improved through reduced between structures and , allowing independent of formats and algorithms, which simplifies refactoring in expansive codebases by isolating changes to specific pipelines. Such fosters modular codebases where updates to one component rarely propagate unintended effects, supporting sustained development over project lifecycles. Overall, these advantages contribute to notable gains in compute-intensive applications, as demonstrated in comparative analyses of paradigms.

Limitations

Data-oriented design (DOD) presents several challenges that can hinder its adoption, particularly for developers transitioning from more conventional paradigms. One primary limitation is the steep associated with DOD, which demands a profound understanding of hardware , including hierarchies and access patterns, in stark contrast to the abstractions provided by (). This shift requires developers to reorient their thinking toward data flows and transformations rather than object behaviors, often leading to initial productivity dips as teams adapt. Another drawback is the potential increase in , stemming from the explicit management of structures such as structures of arrays (SoA) for optimal traversal. While this approach enhances performance in data-intensive scenarios, it results in more verbose implementations for straightforward tasks, as developers must manually handle serialization, , and without the encapsulating conveniences of classes. This verbosity can complicate maintenance and extend development time for features that do not necessitate high throughput. DOD is often unsuitable for small-scale applications, where the upfront overhead in designing and optimizing data layouts outweighs the performance gains. In non-performance-critical software, such as prototypes or utility tools, the complexity of aligning data for hardware efficiency provides minimal benefits compared to simpler OOP implementations, potentially inflating project timelines without proportional returns. As of 2025, tooling gaps remain a significant , with limited () support for navigating and refactoring SoA-based data structures, unlike the robust and tools available for . This scarcity of mature libraries, debuggers, and editors tailored to workflows exacerbates integration challenges with third-party assets, particularly in game engines where mixed paradigms are common.

References

  1. [1]
    Part 1: Understand data-oriented design - Unity Learn
    Data-oriented design (DOD) is a fundamentally different approach to the object-oriented programming (OOP) that many developers use as their main (or only) ...<|control11|><|separator|>
  2. [2]
    Data-Oriented Design
    In essence, data-oriented design is the practice of designing software by developing transformations for well-formed data where the criteria for well-formed is ...
  3. [3]
    Data-Oriented Design (Or Why You Might Be Shooting Yourself in ...
    Dec 4, 2009 · Data-oriented design shifts the perspective of programming from objects to the data itself: The type of the data, how it is laid out in ...
  4. [4]
  5. [5]
    Unity's Data-Oriented Technology Stack (DOTS)
    Unity's Data-Oriented Technology Stack (DOTS) is a combination of technologies and packages that delivers a data-oriented design approach to building games ...
  6. [6]
  7. [7]
    [PDF] Machine Learning Systems: A Survey from a Data-Oriented ... - arXiv
    data-oriented design (DOD) applies many DOA principles on a lower level of abstraction, with claims of significant. 1We refer to "ML-based systems in the ...
  8. [8]
    [PDF] dodbook.pdf - Data-oriented design
    Data-oriented design is current. It is not a representation of the history of a problem or a solution that has been brought up to date, nor ...
  9. [9]
  10. [10]
    Data oriented design and c++ | PPTX - Slideshare
    The document discusses data-oriented design principles for game engine development in C++. It emphasizes understanding how data is represented and used to ...
  11. [11]
    Presentations from GDC08 - Naughty Dog
    Mar 3, 2008 · Adventures in Data Compilation – UNCHARTED: Drake's Fortune (PDF, 1.1 MB) Presented by Dan Liebgold. Amazing Feats of Daring – A Postmortem ...
  12. [12]
    'Engine development is an artistic process' Mike Acton of Insomniac ...
    Apr 21, 2008 · A good understanding of the hardware influences your data design decisions and coding choices, and it's also good practice. An understanding ...
  13. [13]
    Heterogeneous System Architecture - Wikipedia
    Heterogeneous System Architecture (HSA) is a cross-vendor set of specifications that allow for the integration of central processing units and graphics ...Missing: oriented | Show results with:oriented
  14. [14]
    Heterogeneous Systems Architecture - memory sharing and task ...
    Jun 2, 2016 · In this blog post, we'll present you an updated description of the two most important problems tackled by HSA: memory sharing and task dispatching.Missing: oriented evolution
  15. [15]
    Leveraging Rust for Memory Safety in Embedded System ...
    Aug 26, 2025 · RTIC leverages Rust's ownership model to enforce safe concurrency without locks or semaphores. It's a concurrency model tailored for bare ...
  16. [16]
    [2001.01916] High-Performance Statistical Computing in the ... - arXiv
    Jan 7, 2020 · We review recent optimization algorithms that are useful for high-dimensional models and can harness the power of HPC.Missing: oriented | Show results with:oriented
  17. [17]
    CppCon 2014: Mike Acton "Data-Oriented Design and C++" - YouTube
    Sep 29, 2014 · This talk so special is that once you start your journey down the data-oriented rabbit hole, you inevitably end up coming back to watch it multiple times over ...
  18. [18]
    [PDF] Investigating the effect of implementing Data-Oriented Design ...
    ... Data-Oriented principles in the program design can lead to better performance, especially when processing large amounts of data. While the scope of the ...
  19. [19]
  20. [20]
    Unity DOTS / ECS Performance: Amazing | by Anton Antich - Medium
    so basically 100,000,000 times (I ...Missing: design 100000
  21. [21]
    Nanite Virtualized Geometry in Unreal Engine
    Learn about Nanite's virtualized geometry system and how it achieves pixel scale detail and high object counts in Unreal Engine.
  22. [22]
    Overgrowth Open Source Announcement | Wolfire Games Blog
    Apr 21, 2022 · We are pleased to announce that Overgrowth's code is now open source! Not only that, but we're also permanently reducing the game's price by a third worldwide.Missing: oriented | Show results with:oriented
  23. [23]
    The Poor Man's Netcode - Game Developer
    Feb 20, 2018 · Taking a second to stop and think about actual data like this is called Data-Oriented Design. When I talk to people about DOD, many ...Missing: latency | Show results with:latency
  24. [24]
    Megacity Metro – Large-Scale Multiplayer Demo - Unity
    Journey into Megacity Metro and learn how to use Unity Cloud Services, DOTS, and URP to build a high-performance multiplayer game that supports 100+ players on ...
  25. [25]
    Data structure and movement for lattice-based simulations
    Jul 31, 2013 · In other words, an advection code is best written using a structure of arrays (SOA), also called an advection-optimized layout in the LB method ...
  26. [26]
    A generic C++ Structure of Arrays for handling particles in HPC codes
    In contrast, using the concept of a Structure of Arrays (SoA), a single structure holds several arrays each representing one property (such as the identity) of ...
  27. [27]
    [PDF] arXiv:2105.00057v1 [physics.comp-ph] 30 Apr 2021
    Apr 30, 2021 · Array-like collection data structures are widely established in Python's scientific computing-ecosystem for high-performance computations. The ...
  28. [28]
    Data-oriented design: software engineering for limited resources ...
    This book presents foundations and principles helping to build a deeper understanding of data-oriented design.
  29. [29]
    Embedded Systems: Marketable Skills & Intro To Data ... - YouTube
    Nov 19, 2021 · ... embedded candidate with what skills to build and also an intro to data-oriented design for embedded systems. Follow me on Social Media ...
  30. [30]
    Better performance with the tf.data API | TensorFlow Core
    Aug 15, 2024 · This document demonstrates how to use the tf.data API to build highly performant TensorFlow input pipelines.
  31. [31]
    [PDF] Digging Deep for Performance - notes - Qminers
    Data-Oriented Design and Memory Efficiency ... In High Frequency Trading, speed and efficiency are critical. Significant effort is invested into ...
  32. [32]
    Stoyan Nikolov “OOP Is Dead, Long Live Data-oriented Design”
    Oct 26, 2018 · Data-oriented design can be a better paradigm in fields where C++ is most important - game development, high-performance computing, and real ...
  33. [33]
    [PDF] Data-Oriented Design and C++
    Data-Oriented Design and. C++. Mike Acton. Engine Director, Insomniac Games. @mike_acton. Page 2. A bit of background… Page 3. What does an “Engine” team do?
  34. [34]
    Revisiting Data-Oriented Design - ACCU
    ... Data-Oriented Design should be more about design than about performance. Conclusions. If Mike Acton had named his approach Data-Oriented Optimisation, then ...Missing: core | Show results with:core<|control11|><|separator|>
  35. [35]
  36. [36]
    [PDF] Data-Oriented Design in Game Development - IS MUNI
    This presents an opportunity to investigate data-oriented design, its established developer workflows, and the community's views on applying its principles in ...<|control11|><|separator|>