korrents

What Casey Muratori thinks about software performance

@casey-muratori · 37 positions · 0 changes of mind

Game and engine programmer, creator of Handmade Hero and of the Computer Enhance course on performance-aware programming, and a long-standing critic of object-oriented design orthodoxy. He worked on the user interface of Jonathan Blow's The Witness, which is the codebase his writing on compression-oriented programming draws its examples from.

Casey Muratori did not write this page.

We collected these quotes from things they published elsewhere, and every quote links to where it was said. They have no account here and have not endorsed this site. Quotes are word for word; the short line under each one is our own restatement, not their wording. Their own site. Is this you? Claim it or ask us to remove it. Or tell us what is wrong here.

15 dated positions, 2023 to 2026, in their own words. Our reading of what Casey Muratori has said — not written or endorsed by them.

The claim everything else rests on is that software underperforms the hardware it runs on by a factor of ten to a hundred. The rest is an argument about where that goes wrong: architecture and data layout rather than hot spots, which is why optimising later is treated as advice that does not survive contact.

It's just like we are massively underperforming and people don't believe it when you say 10x 100x but it's actually true and we've seen a lot of proof of it as you point out.
  1. maybe performance could be part of a package where you try to take on one of those players. like, hey, look at how much more responsive our thing is than theirs. Might be a nice plus, but that's not going to be sufficient.

    Why performant code matters (but gets widely ignored), with Casey Muratoriyoutube.com 1st of 26 in this recording

  2. I also see people attacking major product categories now with performance-based pitches. Things like File Pilot or the Blick video editor, like things like this that have been coming out lately where it's like, oh, really performant software to try to take on uh incumbents in a space and they've been getting traction.

    Why performant code matters (but gets widely ignored), with Casey Muratoriyoutube.com 2nd of 26 in this recording

  3. 300 milliseconds is like an eternity in computing, right? And so if you're talking about like our pitch is that we're not more than 300 milliseconds, that just shows you how the bar was so far past where it probably should have been for something.

    Why performant code matters (but gets widely ignored), with Casey Muratoriyoutube.com 3rd of 26 in this recording

  4. It's just like we are massively underperforming and people don't believe it when you say 10x 100x but it's actually true and we've seen a lot of proof of it as you point out.

    Why performant code matters (but gets widely ignored), with Casey Muratoriyoutube.com 4th of 26 in this recording

  5. What is the underlying hardware capable of doing at its theoretical peak? And then you measure the delta between that theoretical maximum and what you have achieved.

    Why performant code matters (but gets widely ignored), with Casey Muratoriyoutube.com 5th of 26 in this recording

  6. the performance of your software is generally determined by the longest serial dependency chain because it's something that cannot be parallelized.

    Why performant code matters (but gets widely ignored), with Casey Muratoriyoutube.com 8th of 26 in this recording

  7. If every uh software engineer knew to watch out for false serial dependency chains, things where they were creating series of dependent operations that could not be optimized away or other sorts of architectural problems like that that cannot be easily fixed, then the world would look more like just wait and optimize the hotspot, right?

    Why performant code matters (but gets widely ignored), with Casey Muratoriyoutube.com 9th of 26 in this recording

  8. everybody on your team who is making architectural decisions, those people must know performance and they must make decisions that will allow the other people downstream of them to use an architecture which can be optimized later. If you don't do that, you're just rolling the dice.

    Why performant code matters (but gets widely ignored), with Casey Muratoriyoutube.com 10th of 26 in this recording

  9. They've got blog posts of we had to rewrite this whole thing because the performance was bad. If it was always hotspots that made your performance bad, you'd never have to rewrite the whole thing. So, we know that that doesn't work anymore.

    Why performant code matters (but gets widely ignored), with Casey Muratoriyoutube.com 11th of 26 in this recording

  10. One of the reasons that you don't see hotspot optimization as a thing that really matters that much anymore and one of the reasons I advise that architecture and and not making bad decisions is much more important is because a lot of libraries already have been optimized for you that you might use.

    Why performant code matters (but gets widely ignored), with Casey Muratoriyoutube.com 12th of 26 in this recording

  11. when you're working with a lot of data, the the difference can be massive if you structure it in one way versus structuring another way, right? Again, architectural decisions that have nothing to do with hotspots, they're how all the data is laid out and what the access pattern is, right?

    Why performant code matters (but gets widely ignored), with Casey Muratoriyoutube.com 14th of 26 in this recording

  12. You go to school for four years to learn this. There's no reason you can't learn this in a few months. It's not that hard.

    Why performant code matters (but gets widely ignored), with Casey Muratoriyoutube.com 15th of 26 in this recording

  13. But it's the cost of the compiler not being able to do any optimizations. That's the actual cost. And that cost can be severe.

    Why performant code matters (but gets widely ignored), with Casey Muratoriyoutube.com 20th of 26 in this recording

    compilers

  14. I have never really understood the sort of mentality of there's a difference between code that is like well architected by some principles and code that runs quickly because in my experience usually the code that is architected properly is also the code that runs quickly.

    Why performant code matters (but gets widely ignored), with Casey Muratoriyoutube.com 22nd of 26 in this recording

  15. 3 years earlier
  16. Software performance appears to be central to long-term business interests.

    Performance Excuses Debunkedcomputerenhance.com 1st of 3 in this piece