3 ms·
The course looks really interesting, but in my experience of "performance engineering" you very rarely need to know this stuff. If you want to improve the perf
by jstanley 3y ago
The course looks really interesting, but in my experience of "performance engineering" you very rarely need to know this stuff.
If you want to improve the performance of some random software system you encounter at work, there is normally much lower-hanging fruit available.
First profile the application on as representative a workload as possible. Then fix the accidentally-quadratic loops, stop it from hitting the disk every iteration, add indexes for the worst database queries. If that doesn't at least double your throughput, you are working on an unusually-good application.
- f1shy 3y agoThis is pretty much stated in the course. Basically is rare that you need it. But when you need it, is good to know.
- oooyay 3y agoMore than good to know, sometimes knowing the thresholds of the nuts and bolts is the difference between tuning and rewrite it in a different language or more complex architecture.
- dennis_moore 3y agoI think that the term "software system" can have a much broader meaning than the one you are using here.
- jstanley 3y agoFor sure. I suppose the unspoken step is "work out which component is the bottleneck". If you're lucky then it's CPU bound and everything runs on the same box and you can just look in htop.
- a1o 3y ago> there is normally much lower-hanging fruit Yeap, usually it's more about properly profiling your application on the CPU and memory dimensions, occasionally instrumenting if necessary, experimenting different measurements and tools to have a good picture of your software bottlenecks and where there are gains. Knowing the full picture and where the issues are you can then proceed to these specifics of optimizing your code for performance in these spots, or using a specific library that solves better that problem or what is usually an approach that gives better gain, rethinking knowing the limitations and finding a better design for the problem that part of the code is trying to solve.
- explaininjs 3y agoI do not know why this thread is dismissive of the course when that is precisely what the first few lectures of the course teach, and every subsequent assignment treats “profile and instrument the code” as the (sometimes inferred) step 0. But it’s an 18 unit course, it’d be a disservice to the students (and the world at-large, considering the potential impact of performance engineering) if we stopped there. (I TA’d this class)
- jstanley 3y agoI haven't taken the course, I was just going off the lecture titles. The first 3 lectures are entitled: Introduction and Matrix Multiplication Bentley Rules for Optimizing Work Bit Hacks
- deleted 3y ago[deleted]
- explaininjs 3y ago“Measurement and Timing” is lecture 10. We started with small independent programs and worked up to systems, in much the same way you would not teach an individual to paint by telling them the Sistine Chapel needs a patch fixed. But yes, I do agree profiling is step 0 to performance engineering.
- cozzyd 3y agoit really depends on what you work on...
- dr-detroit 3y ago[dead]
- deleted 3y ago[deleted]
- sebastos 3y agoThe same can be said for many - maybe even most topics in engineering higher education. 99% of the stuff you'd learn in an advanced controls course ain't running anywhere, but it's a body of knowledge we want to maintain and grow because if it was applied everywhere, it could make everything better. Maybe the economics or the politics aren't there today, but you never know where it will come in handy. I 100% get why you're saying it: the fear is that with all of these contraptions in mind, we send a generation of engineers out who immediately reach for their performance bazooka when all they needed was a pocketknife. But SOMEbody is doing actual high quality engineering and needs to reach for this stuff. It's MIT: there's a chance those people are in the room.