简单的线程池(六)

简单的线程池(六)

◆ 概要

本文汇总了 《简单的线程池(三)》、《简单的线程池(四)》、《简单的线程池(五)》 中的测试数据,并在此基础上对比了 非阻塞共享式、阻塞共享式、非阻塞独占式、阻塞独占式 这四个线程池的吞吐量指标。笔者对结果进行了分析,给出笔者的结论。如对测试方案、概念等有不明之处,请参考该博文。

【注】非阻塞共享式 略称为 LS,阻塞共享式 略称为 BS,非阻塞独占式 略称为 LU,阻塞独占式 略称为 BU。

◆ 数据

图1 ~ 图3 汇总了四个线程池的平均吞吐量数据,以及以非阻塞共享式线程池的吞吐量为基准计算得出的差异。

  • 提交周期为 0.5 分钟时的数据,
图1
  • 提交周期为 1 分钟时的数据,
图2
  • 提交周期为 3 分钟时的数据,
图3

◆ 分析

图4 列举了 吞吐量1的差异 在 0.5 分钟、1 分钟和 3 分钟的提交周期内不同思考时间上的对比。

图4

【注】为了生成图表,图中底色为浅灰色的数据由 无意义值 调整为 0.00%。下同。

可以看到,

  • 当思考时间为 0 时,BS、LU、BU 的吞吐量优于 LS 的吞吐量;延长提交周期后,BS 的吞吐量更加优于 LS 的吞吐量,但 LU、BU 的吞吐量和 LS 的吞吐量差异没有发生明显变化;
  • 当思考时间不为 0 时,BS、BU 的吞吐量大幅优于 LS 的吞吐量,LU 的吞吐量劣于 LS 的吞吐量,但差异不会因提交周期的延长而大幅变化;随着思考时间的增加,BS、LU、BU 的吞吐量与 LS 的吞吐量差异逐渐消失。

图5 列举了 吞吐量2的差异 在 0.5 分钟、1 分钟和 3 分钟的提交周期内不同思考时间上的对比。

图5

可以看到,

  • 当思考时间为 0 时,BS、BU 的吞吐量劣于 LS 的吞吐量,LU 的吞吐量略微优于 LS 的吞吐量;延长提交周期后,BS、BU 的吞吐量更加劣于 LS 的吞吐量,但 LU 和 LS 的吞吐量差异没有发生明显变化;
  • 当思考时间不为 0 时,因 LS、BS、LU、BU 的吞吐量均为 0,它们间没有差异。

图6 列举了 吞吐量3的差异 在 0.5 分钟、1 分钟和 3 分钟的提交周期内不同思考时间上的对比。

图6

可以看到,

  • 当思考时间为 0 时,BS、LU、BU 的吞吐量略微优于 LS 的吞吐量;延长提交周期后,BS 的吞吐量更加优于 LS 的吞吐量,BU 的吞吐量和 LS 的吞吐量差异没有发生明显变化;
  • 当思考时间不为 0 时,BS、BU 的吞吐量大幅优于 LS 的吞吐量,LU 的吞吐量劣于 LS 的吞吐量,但差异不会因提交周期的延长而大幅变化;随着思考时间的增加,BS、LU、BU 的吞吐量与 LS 的吞吐量差异逐渐消失。

◆ 结论

通过增加了共享式吞吐量与独占式吞吐量的对比,本次分析再次验证了 《简单的线程池(三)》 中的结论,即在思考时间不为 0 的情况下,

  • 在需要应对高频并发的场合,采用阻塞式线程池的吞吐量指标会优于非阻塞式线程池的吞吐量指标;
  • 在需要应对低频并发的场合,采用阻塞式线程池的吞吐量指标相当于非阻塞式线程池的吞吐量指标;
  • 在仅为分派并发任务的场合,采用阻塞式线程池的吞吐量指标会劣于非阻塞式线程池的吞吐量指标。

同时笔者认为,在考虑思考时间为 0 的极端情况下,

  • 独占式线程池的吞吐量指标会优于共享式线程池的吞吐量指标。

◆ 最后

完整的分析数据请参考 [github] cnblogs/15702250 。

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部