3 ms·
That is what everyone currently and we know the results, that only takes you from horribly slow to very slow. In order to have a chance to get anywhere close t
by Jensson 2y ago
That is what everyone currently and we know the results, that only takes you from horribly slow to very slow.
In order to have a chance to get anywhere close to fast you need each component to already be very fast, and then you can build a fast system on top of those. When you work with slow components you wont use the right architecture for the system, instead you start working around the slowness of each component and you end up with a very slow mess.
Example: A function call is slow, it calls a thousand different things so you speed this up by putting a cache in front, great! But now this cache slows down the system, instead you could have sped up the function calls execution time by optimizing/trimming down those thousand things it calls.
Adding that cache there made you get further away from a fast system than you were before, not closer. One cache is negligible, but imagine every function creating a new cache, that would be very slow and basically impossible to fix without rewriting the whole thing.
- rudasn 2y agoOK so the cache is the one thing, and the next most expensive "little thing" is the one thing to focus on next?
- Jensson 2y agoBut removing the cache makes the system slower, it didn't optimize anything. So no, fixing this isn't possible with that approach, you need to take the holistic approach.
- llamaimperative 2y agoThere's nothing about identifying and solving one problem at a time that prevents one from taking a holistic approach. In fact the entire point is to interpret the behavior of the entire system in order to find the right singular intervention. To find the true globally optimal point of intervention, one must look at the entirety of the system.
- Jensson 2y agoIf you are saying that your method includes all methods, then sure being open to consider all methods of making something faster will include the best way to do it. But I thought were were talking about useful advice here, to be useful you have to narrow it down a bit.
- llamaimperative 2y ago"Everyone knows this" yet you don't actually see organizations work like this almost ever in practice. Especially not software organizations. Instead you see big splashy initiatives to "overhaul performance" or whatever. There is definitionally no more efficient way to improve the performance of a system than sequentially targeting each new bottleneck in its performance and nothing else. Your example is just a case of picking a non-ideal method to improve a bottleneck. It's a lot easier to get this right when you're focusing on one important problem instead of generally "optimizing everything," which produces a clear incentive to take easy, immediately available, probably-not-ideal solutions all over the place.
- Jensson 2y ago> There is definitionally no more efficient way to improve the performance of a system than sequentially targeting each new bottleneck in its performance and nothing else. You are making an extremely strong statement here, how do you define "bottleneck" for this to be true? Many slow systems doesn't have bottlenecks, they are just slow overall with no bottlenecks.
- llamaimperative 2y agoAnd this is the key insight that "everyone knows" and you apparently do not: every system has exactly one bottleneck at any given point in time. The bottleneck can move, alternate, or not be so significant relative to other near-bottlenecks that it's hard to spot, but there is exactly one. Your perception that "there are no bottlenecks" is exactly the perception Deming set out to disprove. Riddle me this: how can a system perform faster than its single slowest component? It cannot. Ergo, there is a single bottleneck that sets the pace of the entire system.
- Jensson 2y ago> every system has exactly one bottleneck at any given point in time What, no they don't. Does a straight glass have a bottleneck? No, most bottles have it, but not straight glasses, hence not every system has a bottleneck. The same applies to IT systems, there the topology is much more complex so often can have many bottlenecks, or sometimes fewer etc. > Riddle me this: how can a system perform faster than its single slowest component? A perfectly optimized component can't be a bottleneck but can still be the slowest component, trying to optimize that further will not speed up the system at all. Here we see that you will miss a lot of optimization opportunities since you think the slowest component is the bottleneck, and not looking further.