Hacker News new | ask | show | jobs
by Nevermark 681 days ago
Your entire argument is about throughput in sequential pipelines or parallel systems. On systems not shared with other independent tasks.

Yes, in those simple cases there is one bottleneck at any given time.

But most tasks do not fit those conditions, and economically and technically are best optimized reflecting other objectives than just throughput.

Many times parallel or sequential pipelined groups of tasks have optional subtasks, so there will be as many bottlenecks as there are components that may run while others don’t.

Many tasks run intermittently, or for resource reasons, need to run as an uninterrupted sequence, with no opportunity to pipeline, and are optimized for latency. Which means any speed up of any subtask has value.

Many systems run multiple independent tasks to maximize return on resource costs, and so tasks are optimized to minimize active computational time. And any speed up of anything can improve that.

In all those cases, multiple modules can be usefully optimized at any given time.

And many factors can be relevant to making that choice. Such as relative benefit of optimization vs. time to achieve the optimization, cost of making the optimization, and project risk, all come into play.

In practical reality, there is a long tail of such factors. For instance, the skill and interest levels of available developers, relative to the module optimization options.