Skip to content

Commit 6e0269c

Browse files
committed
minor changes
1 parent 71c82af commit 6e0269c

File tree

1 file changed

+17
-18
lines changed

1 file changed

+17
-18
lines changed

Objects/listobject.c

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1905,7 +1905,7 @@ abinarysort(MergeState *ms, const sortslice *ss, Py_ssize_t n, Py_ssize_t ok, in
19051905
Py_ssize_t last = ok >> 1;
19061906
Py_ssize_t std = ok >> 2;
19071907
Py_ssize_t mu = last;
1908-
Py_ssize_t nb = 0; // badness of fit
1908+
Py_ssize_t nbad = 0; // badness of fit
19091909

19101910
if (adapt) {
19111911
for (; ok < n; ++ok) {
@@ -1983,7 +1983,7 @@ abinarysort(MergeState *ms, const sortslice *ss, Py_ssize_t n, Py_ssize_t ok, in
19831983

19841984
// Update Adaptive runvars
19851985
std = L < mu ? mu - L : L - mu;
1986-
nb += std;
1986+
nbad += std;
19871987
mu = L + L - last;
19881988
mu = mu < 0 ? 0 : mu > ok ? ok : mu;
19891989
last = L;
@@ -2016,15 +2016,15 @@ abinarysort(MergeState *ms, const sortslice *ss, Py_ssize_t n, Py_ssize_t ok, in
20162016

20172017
// Update Adaptive runvars
20182018
std = L < mu ? mu - L : L - mu;
2019-
nb += std;
2019+
nbad += std;
20202020
mu = L + L - last;
20212021
mu = mu < 0 ? 0 : mu > ok ? ok : mu;
20222022
last = L;
20232023
}
20242024
}
20252025

20262026
// Return Adaptivity measure (max 1000)
2027-
return nb * 2000 / ((n + 2 * nsorted - 1) * n);
2027+
return nbad * 2000 / ((n + 2 * nsorted - 1) * n);
20282028

20292029
fail:
20302030
return -1;
@@ -3221,9 +3221,10 @@ list_sort_impl(PyListObject *self, PyObject *keyfunc, int reverse)
32213221
// NOTE: Could turn on based on minlen or comparison type
32223222
int binary_adapt = ms.listlen >= 100;
32233223
if (binary_adapt) {
3224-
int adapt = 0; // do not run binarysort adaptivity on 1st run
3225-
Py_ssize_t cs = 0;
3224+
int adapt = 0; // do not run binarysort adaptivity on 1st run
3225+
Py_ssize_t cs = 0; // but do check goodness of adaptive fit
32263226
Py_ssize_t cd = 1;
3227+
Py_ssize_t abinres;
32273228
do {
32283229
/* Identify next run. */
32293230
Py_ssize_t n;
@@ -3241,26 +3242,24 @@ list_sort_impl(PyListObject *self, PyObject *keyfunc, int reverse)
32413242
cs -= 1;
32423243
}
32433244
else {
3244-
Py_ssize_t bres;
3245-
bres = abinarysort(&ms, &lo, force, n, adapt);
3246-
if (bres < 0)
3245+
abinres = abinarysort(&ms, &lo, force, n, adapt);
3246+
if (abinres < 0)
32473247
goto fail;
3248-
adapt = bres < 250;
3249-
if (adapt) {
3248+
adapt = abinres < 250;
3249+
if (adapt)
32503250
cd = 1;
3251-
}
3252-
else {
3253-
cd += 2;
3254-
if (cd > 11)
3255-
cd = 11;
3256-
cs = cd;
3257-
}
3251+
else if (cd >= 9)
3252+
cs = cd = 11;
3253+
else
3254+
cs = cd = cd + 2;
32583255
}
32593256
n = force;
32603257
}
32613258
else {
32623259
// After long monotonic run start adapting immediately
32633260
adapt = 1;
3261+
cs = 0;
3262+
cd = 1;
32643263
}
32653264
/* Maybe merge pending runs. */
32663265
assert(ms.n == 0 || ms.pending[ms.n -1].base.keys +

0 commit comments

Comments
 (0)