HackerTube

CppCon 2014: Mike Acton "Data-Oriented Design and C++"

CppCon9 HN recommenders · recommended in 9 months, 2015–2026
YouTube
talk · intermediate · evergreen · 2015–2026 on HN

Mike Acton of Insomniac Games argues that a program's purpose is transforming data, and shows how common C++ approaches work against that in performance-critical game development. He covers cache behavior, data layout and the limits of compilers.

It is the go-to talk HN points to for data-oriented design and hardware-aware performance thinking, despite Acton's blunt style.

12 comments from Hacker News

@moregrist2026-02 · in “Zed editor switching graphics lib from blade to wgpu”

It clearly didn’t come out of game dev. Many people doing high performance work on either embedded or “big silicon” (amd64) in that era were fully aware of the importance of locality, branch prediction, etc But game dev, in particular Mike Acton, did an amazing job of making it more broadly known. His CppCon talk from 2014 [0] is IMO one of the most digestible ways to start thinking about performance in high throughput systems. In terms of heroes, I’d place Mike Acton, Fabian Giesen [1], and Bruce Dawson [2] at the top of the list. All solid performance-oriented people who’ve taken real time to explain how they think and how you can think that way as well. I miss being able to listen in on gamedev Twitter circa 2013 before all hell broke loose. [0] ▶ this video [1] link [2] link

Strongly recommends View on HN
@iamcreasy2025-07 · in “Writing memory efficient C structs”

This reminds of an amazing talk by Mike Acton on Data oriented design: ▶ this video And there is a related talk by Andrew Kelley implementing these ideas on Zig toolchain: link

Strongly recommends View on HN
@zengid2018-04 · in “Ask HN: What is your favourite tech talk?”

A lot of great talks already mentioned. Thought I'd add a gem from Mike Acton: Data-Oriented Design and C++ ▶ this video

Strongly recommends View on HN
@mtzet2024-03 · in “Ask HN: How can I learn about performance optimization?”

Most software in the industry is slow because it's doing a lot of stuff that it shouldn't. Often times additional "optimization" layers adds caching, but makes getting to the root of the issue harder. The biggest win is primarily getting rid of things you don't need and secondarily operating on things in batch. My playbook for optimizing in the real world is something like this: 1. Understand what you're actually trying to compute end-to-end. The bigger the chunk you're trying to optimize, the greater the potential for performance. 2. Sketch out what an optimal process would look like. What data do you need to fetch, what computation do you need to do on this, how often does this need to happen. Don't try to be clever and micro-optimize or cache computations. Just focus on only doing the things you need to do in a simple way. Use arrays a lot. 3. Understand what the current code is actually doing. How close to the sketch above are you? Are you doing a lot of I/O in the middle of the computation? Do you keep coming back to the same data? If you want to understand the limits of how fast computers are, and what optimal performance looks like I'd recommend two talks that come with a very different perspective from what you usually hear: 1. Mike Acton's talk at cppcon 2014 ▶ this video 2. Casey Muratori's talk about optimizing a grass planting algorithm link

Recommends View on HN
@dxhdr2023-07 · in “Data-Oriented Design Principles”

Mike Acton presented a great visualization of this in his 2014 DOD talk -- here's a link to just that clip: ▶ this video

Recommends View on HN