我正在阅读实践中的Java Concurrency,并且出现了一个类似的内容: -
6.3.4并行化异构任务的限制
在多个工作人员之间划分异构任务的另一个问题 是任务可能有不同的大小。如果你在之间划分任务A和B. 两个工人,但A需要B的十倍,你只加快了总数 过程减少9%。最后,在多个工人之间划分任务总是涉及到 一些协调开销;这个部门是值得的 由于生产率的提高,开销必须超过补偿 并行
现在,如果你经历了大胆的部分,那么说工作线程的协调开销必须超过我使用线程并行性实现的性能改进是否正确?
有人可以帮我理解吗?
答案 0 :(得分:3)
不,粗体位会非常显着地改变句子的含义:
最后,在多个工作人员之间划分任务总是需要一些协调开销;为了使这个部门变得有价值,由于并行性的提高,这种开销必须得到补偿。
如果那只是“必须超过提高生产力......”那么你就是对的。上面所说的是,通过在工作线程之间划分任务而产生的性能损失(开销)必须 ,而不是通过完成它所获得的性能提升。
例如,如果您的开销是10秒而您的性能提升仅为5秒,那么并行操作实际上降低了您的整体性能。如果您的开销是10秒,但性能提升为50秒,那么最终总体执行时间减少了40秒(即改进)。
另一种说法是“......由于并行性,生产率的提高必须抵消这种开销。”