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

645,690
324
Published 2014-09-29
www.cppcon.org/
--
Presentation Slides, PDFs, Source Code and other presenter materials are available at: github.com/CppCon/CppCon2014
--
The transformation of data is the only purpose of any program. Common approaches in C++ which are antithetical to this goal will be presented in the context of a performance-critical domain (console game development). Additionally, limitations inherent in any C++ compiler and how that affects the practical use of the language when transforming that data will be demonstrated.
--
Mike Acton: Engine Director, Insomniac Games
--
Videos Filmed & Edited by Bash Films: www.BashFilms.com/

*-----*
Register Now For CppCon 2022: cppcon.org/registration/
*-----*

All Comments (21)
  • @nicbarkeragain
    The thing that makes 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 the years and getting more out of it each time - basically every sentence is packed with insight.
  • @goranmilovano
    @1:18:00 - "Ok, great. You don't care how long it takes ... Great. But people who don't care how long it takes is also the reason why I have to wait 30 seconds for Word to boot." Mike Acton really knows how to put things in perspective :)
  • @jearsh
    dude literally took pictures of a whiteboard with writing on it to make his slides...my hero
  • @paulcosta8297
    Still not over how I C O N I C this monumental Acton masterpiece keynote is.
  • @Sychonut
    I am a recovering object oriented programmer and have written a significant amount of data oriented C++ code during the past few years and while the "mental switch" is difficult at first thanks to all the Java "a car is-a vehicle, and 'has' four wheels" BS the universities have pumped into our brains, once you go data-oriented, there is no going back. The code is faster, easier to understand, more modular, and surprisingly much much easier to vectorize. Granted that I write low level code so performance is critical, but as Mike said at one point in the talk, I doubt that my mindset would change much if I was to write other types of software. As Mike likes to say a program does not run on ether. It runs on actual physical hardware, and it is important for software to cater to hardware and its fast paths, otherwise you end up with the kind of shit software (say your browser) that does not feel any faster than it used to 15 years ago. Programmers always grow in carelessness, and no more, until all system resources are consumed, and that's why an order of magnitude more processing power has not made our experience an order of magnitude better.
  • @gothikia
    I'm so glad that someone finally stood up and told that audience in particular exactly what needed to be said.
  • @DaveHoskinsCG
    This guy makes a lot of sense. Basically programming is just a tool to achieve your goal. It's NOT about the journey, it's about getting results. It's not a life model.
  • @TheBuzzSaw
    I saw this video the day it went up, and it seriously changed everything for me. I would not be the programmer I am today without Mike Acton.
  • @lalirose
    I think the key point hes trying to get across is batch your transforms. Identify where the bulk of the calculations are being applied and organise your data so that only the data that is necessary as input is congruent in a data structure to minimise cache misses to generate the output data as efficiently as it can
  • @Mike-gs7eo
    I frickin love this talk. Keep coming back to watch it. There is some cold hard truths here that if you have been doing software dev for some time can be hard to swallow.
  • @bruterasta
    Well, Mike is now prinicpal engineer of Unity engine.
  • @Domarius64
    Mad respect for this guy. Not just for his no bullcrap high level approach but his ability to give a programming talk without getting bogged down in the details. Just minimal code examples. Also I like how he cuts through the bullcrap of some of the questions and gets to the answer quicker :)
  • @PeterAndLeelien
    Mike Acton and Mr. 1:16 are BOTH correct. For many, dev time is worth more than CPU time. Many current software tools (i.e. anything "Java") caters for their needs. For others, outright performance or performance per watt is worth way more than their own time. E.g. game engines, or anything in a datacenter. If you save 10% on something that's run on thousands of servers, that's a win in terms of power costs. The problem is accepting that the other guy's situation is just as valid.
  • @FreeLancerdu29
    I remember when this talk was release in 2014. I was impressed and show it to few mates. Then almost 7 years later, I realize I often came to pick few parts. Now this video is almost 0.5 million views. That's crazy for a such "niche" topic. Something has really been said during this talk.
  • @BobRaygen
    What gets me is the little comment that what this is what Mike defines as what a professional is, or should do. Diving into cache miss or wasted space cache space, cycle times, assembly assessment is just what is considered as a part of the job. The remark about how companies push for feature quantity over quality really is a insight into what many companies consider a professionally done job and where the focus is. It really is unfortunate that there is not wide spread focus on performant and efficient in addition to just working.
  • I was never that interested in game programming, but I love this bare metal stuff. I like this guy, I'd work for him in a second.
  • The best talk ever, It simply puts up together two ideas, 1- a language is simply here to express an idea, it is not the idea in itself. 2- all the ways lead to Rome , which means to speak your idea don't be afraid to talk ASSEMBLY!!
  • @odraencoded
    A good portion of this talk applies to general programming and not just ot low/mid-level C++.
  • "but we aren't performance constrained, we're engineering time constrained!" This is why we can't have nice things.