快车道

快速轨道:高效精确的动态种族检测。众所周知,多线程程序容易出现争用情况。以前关于动态竞速检测器的研究包括快速但不精确的竞速检测器,它们可以报告假警报,以及缓慢但精确的从不报告假警报的竞速检测器。后者通常使用昂贵的向量时钟操作,这些操作要求程序线程的时间呈线性。本文充分利用了这样一个观点:在大多数情况下,矢量时钟的全部通用性是不必要的。也就是说,我们可以用自适应的轻量级表示来代替重量级的向量时钟,对于目标程序的几乎所有操作,它只需要恒定的空间并支持恒定的时间操作。这种表示方式的改变显著地提高了时间和空间性能,而不会降低精度。在Java基准测试(包括Eclipse开发环境)上的实验结果表明,我们的FastTrack竞赛检测器比传统的矢量时钟竞赛检测器快一个数量级,大约是高性能DJIT+算法的两倍。在我们的Java基准测试中,FastTrack的速度甚至可以与橡皮擦相提并论,但从不报告错误警报。