CppCon 2014: Mike Acton "Data-Oriented Design and C++"
Why Hacker News recommends it
It is the go-to talk HN points to for data-oriented design and hardware-aware performance thinking, despite Acton's blunt style.
What it is
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.
Recommended by 9 HN commenters across 9 different months, 2015 to 2026.
What Hacker News said
Strong rec zengid · 2018-04 · on “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]
Strong rec iamcreasy · 2025-07 · on “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]
Strong rec moregrist · 2026-02 · on “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 g
Recommends yoklov · 2015-03 · on “Ask HN: How do I become a faster programmer?”
I'm going to disagree with most of the comments here which say that you can't become faster, as I have become notably faster over the past couple of years (perhaps 1.5-2x faster!!). Basically, it was a fairly major coding style change that happened after working with others in my industry (game development) and seeing their prolific output of high quality code. My process for writing code used to be: - Identify problem. - Identify the abstractions that fit the problem - Implement those abstractions - Write code to solve problem using those abstractions. Now it is - Identify problem. - Write code to solve problem, pulling abstractions out if and only if they make sense and would actually be u
Recommends harry8 · 2015-05 · on “Asmttpd – Web server for Linux written in amd64 assembly”
Just because it's asm doesn't mean it's fast, sure. Just because it's C doesn't mean it's faster than an implementation in your favourite scripting language. Having said that, compilers do pretty badly on C-to-simd optimisation. The best you get is loop vectorization if it's really simple logic. You can usually get some pretty good wins there. The fact you lay out your memory for simd usually is a win all of its own due to cache prefetching even if you don't actually use any simd instructions. Compilers need heuristics to manage cache when you know what you're trying to do, (eg when should it use non-temporal writes, for example?) Fast C code is written while having a really clear mental mod
Recommends cellularmitosis · 2020-05 · on “Old box, dumb code, few thousand connections, no big deal”
A great talk which gets you thinking in this mindset is "Data-Oriented Design and C++" by Mike Acton [this video] As an example, if you are checking a boolean flag (1 bit) on an object, and it ends up being a cache miss (and x86_64 cache line size is 64 bytes), then your computer just went through all the expense of pulling in 512 bits from RAM yet it only used 1 of them. You are achieving 0.2% of the machine's possible throughput.
Recommends DeathArrow · 2022-03 · on “.NET Myths Dispelled”
I think this is a valid critique. But then, most of the development (C aside) has been a victim to OOP. I have begun to think that OOP creates more problems than it solves. Added complexity and performance loss being the biggest. It's insane if you peek into a big projects where many developers came and went and each of them read an article about what it seemed an interesting design pattern and tried to implement them. You can have some kind of procedural programming if you use classes just to store data and use static methods. But the frameworks are OOP and there is no way around that unless you write your own frameworks. I am a big fan of Mike Acton's Data Oriented Architecture speeches, b
Recommends dxhdr · 2023-07 · on “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]