Business apps have it a lot easier - the users are more forgiving, I guess either because they don't have a choice in the matter or any better options.
It's all about structuring your data such that don't don't cache miss on your fetches and you don't stall your pipelines by doing operations that flush/occupy the same pipe.
You can easily see 10-50x performance boosts on the same dataset with the right approach.
Look up Data Oriented Design, Mike Acton talks about it a ton.
This is not a critique against either Design Patterns or Java, both of them are important and useful. And really, quite often you don't care about waiting 100 cycles, you have ten million times 100 cycles in every second. It's when you start crunching numbers in large quantities that it can get problematic. Modern CPUs are very fast, but only if you feed them data in the right order. Otherwise you're basically running on a machine from 20 years ago, just with 32GB of RAM. Best program design right now is to yes, do write your deep class hierarchies and whatnot, but also know how to identify the parts of your program doing heavy computation and how to restructure those so you can unleash the full power of a modern processor.
That said, in any performance critical application, you pay close attention to your memory hierarchy and you design and compile your application in a way to respect that as well as take advantage of the underlying hardware architecture and resources to the fullest.
This can actually be worse due to context switch overhead and caches you were using getting evicted by the now running thread hitting the same issue.
If you want to do this right you should be organizing your data so that the prefetcher and take advantage of it. All of those speculative things still have a cost.
If you had to look up CRUD vertex and texture data as database rows from another machine through the internet you wouldn't see a very smooth game.
When programming with APIs like OpenGL or DirectX, you either know what you're doing and get everything right, or you get a completely black framebuffer and maybe some error codes. There's practically no in-between. For business applications you can get pretty convincing results just by throwing together some buttons and textboxes in NetBeans or Visual Studio.
(Not to negate your point though. The crappy HR systems are painfully slow and incredibly frustrating to use, in comparison)