зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1290676 - Call InsertionSort when |denseLen < 24| in MergeSort. r=mrrrgn
--HG-- extra : rebase_source : fb647e2f9d660c5070f265c18fb194a40d7cb843
This commit is contained in:
Родитель
b2d36aaaeb
Коммит
eb044fd113
|
@ -230,11 +230,6 @@ function MoveHoles(sparse, sparseLen, dense, denseLen) {
|
||||||
|
|
||||||
// Iterative, bottom up, mergesort.
|
// Iterative, bottom up, mergesort.
|
||||||
function MergeSort(array, len, comparefn) {
|
function MergeSort(array, len, comparefn) {
|
||||||
// To save effort we will do all of our work on a dense list,
|
|
||||||
// then create holes at the end.
|
|
||||||
var denseList = new List();
|
|
||||||
var denseLen = 0;
|
|
||||||
|
|
||||||
// Until recently typed arrays had no sort method. To work around that
|
// Until recently typed arrays had no sort method. To work around that
|
||||||
// many users passed them to Array.prototype.sort. Now that we have a
|
// many users passed them to Array.prototype.sort. Now that we have a
|
||||||
// typed array specific sorting method it makes sense to divert to it
|
// typed array specific sorting method it makes sense to divert to it
|
||||||
|
@ -243,6 +238,11 @@ function MergeSort(array, len, comparefn) {
|
||||||
return callFunction(TypedArraySort, array, comparefn);
|
return callFunction(TypedArraySort, array, comparefn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// To save effort we will do all of our work on a dense list,
|
||||||
|
// then create holes at the end.
|
||||||
|
var denseList = new List();
|
||||||
|
var denseLen = 0;
|
||||||
|
|
||||||
for (var i = 0; i < len; i++) {
|
for (var i = 0; i < len; i++) {
|
||||||
if (i in array)
|
if (i in array)
|
||||||
denseList[denseLen++] = array[i];
|
denseList[denseLen++] = array[i];
|
||||||
|
@ -253,7 +253,7 @@ function MergeSort(array, len, comparefn) {
|
||||||
|
|
||||||
// Insertion sort for small arrays, where "small" is defined by performance
|
// Insertion sort for small arrays, where "small" is defined by performance
|
||||||
// testing.
|
// testing.
|
||||||
if (len < 24) {
|
if (denseLen < 24) {
|
||||||
InsertionSort(denseList, 0, denseLen - 1, comparefn);
|
InsertionSort(denseList, 0, denseLen - 1, comparefn);
|
||||||
MoveHoles(array, len, denseList, denseLen);
|
MoveHoles(array, len, denseList, denseLen);
|
||||||
return array;
|
return array;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче