3 ms·
This is such an awesome book. I read this back in the day and loved every minute of it. I think there is a lot to learn from it still, even if you're highly u
by ben7799 7y ago
This is such an awesome book. I read this back in the day and loved every minute of it.
I think there is a lot to learn from it still, even if you're highly unlikely to be writing the same kind of graphics code.
The book has a great balance between:
- Micro-optimization - fiddling with ASM and data structures, memory alignment and such, custom math functions that lose precision in tradeoff for great acceleration due to hardware features
- Algorithmic optimization - trying to do things in ways that are mathematically faster (computational complexity)
I work in enterprise software, not games or anything touching hardware.. it is depressing algorithmic complexity is ignored so often these days and if you give an interview question it is often greeted with blank stares and there seem to be college undergrad curriculums which don't even touch on it.
I'm in that camp that feels like software has gotten so inefficient in a lot of cases that the user experience is no faster than 20 years ago. We have acceleration & optimization for certain things but every day applications are no faster than they ever were and when you have to use a web application stuff is often a lot slower than a native app was 10-20 years ago.
There are still a lot of great college texts on computational complexity even though trade publications ignore this stuff with a vengeance.
- robmaister 7y agoFrom my experience (graudated in 2016), most interviewing is centered around algorithmic complexity or at least regurgitating logarithmic complexity algos. Potential hires still in or just out of school should have no problem answering those questions, but a few years out and most people forget those skills since most of the time the answer is to use an existing implementation or find a way to avoid the problem entirely. All of the people I know with a 4-year CS degree learned all about that stuff in their data structures/intro to algo classes. I work in games and have had to both implement a few data structures on my own (mainly specialized trees and graphs). I've seen them help performance a ton and I've also had to scrap one or two of them because the naive implementation was faster. Nowadays a lot of indirection means your processor is spending most of it's time waiting on memory reads, while flat arrays can be loaded into CPU caches a lot more efficiently.
- Junk_Collector 7y agoUser interfaces are measurably slower than they were 20 years ago by at least an order of magnitude depending on how you measure it. They also do more, so it's up to the particular user and use case to decide if the trade off was good. There was someone who said something along the lines of, "Heaven is old software on new hardware" and I personally agree with them.