实际上,在Java Concurency中,可以找到以下直方图(12.3):

X轴(水平)有图例:
每线程完成时间
。
Y轴有传说
线程数
在相关的文本中,作者解释了方差。正如我所理解的,如果我进行了许多相同的工作和最佳结果的实验-1秒,最坏的结果-5秒,然后方差-4秒。
实际上我不明白这个直方图。
引用书中的话:
图12.3显示了使用缓冲区大小为1000的TimedPutTakeTest变体的每个Ͳ任务完成时间,其中256个并发任务中的每个任务只迭代非Ͳ公平(阴影条)和公平信号量(打开条)的1000个项。(第13.3节解释了锁和信号量的公平排队和非公平排队。)非公平信号的完成时间从104到8,714 ms不等,超过80倍。可以通过强制在并发控制中增加公平性来缩小这一范围;这在BoundedBuffer中很容易做到,方法是将信号量初始化为公平模式。如图12.3所示,这成功地大大减少了差异(现在仅为38,194到38,207毫秒),但不幸的是,也大大降低了吞吐量。(具有更典型类型任务的更长时间的Ͳ运行测试可能会显示出更大的吞吐量下降。)
你能解释作者在哪里找到104个和8.714个数字吗?
发布于 2017-03-09 15:29:11
方差是统计中的一个概念,它解释了数据的可变性。因此,从图表中可以清楚地看出,非公平信号量的完成时间范围很广(=方差),而公平信号量的方差很小(因此所有的完成时间大致相同)。
数字104 (0.1秒)和8714 (8.7秒)相应地是图像中最左边和最右边的灰条。
因此,实验采取了一些线程,并对一个公平的和不公平的信号进行了多次计时测试,把线程的总时间/#绘制成一个图表,然后用不同的线程数重复实验。
https://stackoverflow.com/questions/42698852
复制相似问题