要排序的数组比最大的CPU缓存大(比至少两个数量级更大)。
由于quicksort涉及将值移动到高于枢轴和副轴之上的枢轴 反之亦然,我认为在排序的开始阶段,它不是非常适合CPU缓存的吗?
在后期阶段(小子阵列),它可能是缓存友好的,但初始阶段的成本又如何呢?
是否有人计算过一些关于缓存未命中和缓存命中成本的公式以及它如何影响快速排序的总体成本?
答案 0 :(得分:2)
高性能语言中的典型排序算法将停止递归而不是理论建议的一个元素,而是作为2 ^ N个元素(16个左右)在最后阶段使用硬编码排序。这使得高速缓存行中的排序保持有效。
然而,在初始阶段,两个元素是否由200或20000个元素分隔并不重要。无论如何,他们都在不同的缓存行上。