V8은 10 개 이상의 요소 길이에 대해 정렬을 사용하고 그 이하의 배열에 대해서는 삽입 정렬을 사용합니다. 여기 the sources은 다음과 같습니다V8의 Array.sort에서 쉘 정렬보다 삽입 정렬을 사용하는 이유는 무엇입니까?
function InnerArraySort(array, length, comparefn) {
// In-place QuickSort algorithm.
// For short (length <= 10) arrays, insertion sort is used for efficiency.
나는 쉘 일종의 대신 삽입 정렬을 사용하지에 대한 이론적 근거는 무엇 궁금하네요? 나는 아마 10 요소의 배열에 대해 차이를 만들지는 않지만 여전히 이해할 수 있습니다. 어떤 아이디어?
분명히 작은 스위치가 스위치를 포함하는 데있어 성능 차이가 충분합니다. – Bergi
@Bergi, 예, '삽입 정렬'은 '빠른 정렬'보다 작은 배열에서 더 좋지만 '쉘 정렬'은 작은 배열에서 '삽입 정렬'보다 우수합니다. –
Afaik 쉘 정렬은 삽입 정렬과 크게 다르지 않지만 가치있는 변화라고 생각하고 현실적인 벤치 마크를 작성할 수 있다면 V8 팀이 패치에 만족할 것이라고 확신합니다. – Bergi