快速排序中分支缺失的分析
数据结构与算法
2015-01-20 v1 概率论
摘要
算法分析主要依赖于统计经典的初等运算,如加法、乘法、比较、交换等。这种方法通常足以量化算法的效率。然而在某些情况下,现代处理器架构的特性(如流水线执行和内存层次结构)会对运行时间产生显著影响,必须加以考虑才能获得可靠的图景。快速排序就是一个这样的例子:实验表明,在特定的硬件条件下,经典最优的选取样本中位数作为枢轴的策略反而有害。其原因在于分支预测错误,其回滚成本变得占主导地位。在本文中,我们首次对流水线及其导致的分支预测错误对(经典)快速排序以及 Oracle Java 7 库中实现的 Yaroslavskiy 双枢轴快速排序效率的影响进行了精确的解析研究。对于后者,目前尚未完全理解为何实验证明其比高度优化的经典单枢轴版本快 10%。针对不同的分支预测策略,当枢轴从输入样本中选取时,我们给出了上述快速排序变体所引起的预期分支缺失次数的精确渐近分析。我们得出结论:分支缺失次数的差异太小,不足以解释双枢轴算法的优越性。
引用
@article{arxiv.1411.2059,
title = {Analysis of Branch Misses in Quicksort},
author = {Conrado Martínez and Markus E. Nebel and Sebastian Wild},
journal= {arXiv preprint arXiv:1411.2059},
year = {2015}
}
备注
to be presented at ANALCO 2015