# HG changeset patch # User Jaroslav Hajek # Date 1246009234 -7200 # Node ID df1ea906c1c433875abacba4e07f420e6b92a2cc # Parent a5f6b5800f86916118a4da69ca67580b67bccce6 a slight speed-up in oct-sort.cc diff -r a5f6b5800f86 -r df1ea906c1c4 liboctave/ChangeLog --- a/liboctave/ChangeLog Fri Jun 26 07:13:28 2009 +0200 +++ b/liboctave/ChangeLog Fri Jun 26 11:40:34 2009 +0200 @@ -1,3 +1,8 @@ +2009-06-26 Jaroslav Hajek + + * oct-sort.cc (octave_sort::lookup_merge): Slightly speed-up + the merge case. + 2009-06-26 Jaroslav Hajek * oct-sort.cc (octave_sort::lookup_merge): Fix lower-part diff -r a5f6b5800f86 -r df1ea906c1c4 liboctave/oct-sort.cc --- a/liboctave/oct-sort.cc Fri Jun 26 07:13:28 2009 +0200 +++ b/liboctave/oct-sort.cc Fri Jun 26 11:40:34 2009 +0200 @@ -1806,13 +1806,22 @@ { // Do a linear merge. octave_idx_type i = lo, j = 0; - while (j != nvalues && i < hi) + + if (j != nvalues && i != hi) { - if (comp (values[j], data[i])) - idx[j++] = i; - else - i++; + while (true) + { + if (comp (values[j], data[i])) + { + idx[j] = i; + if (++j == nvalues) + break; + } + else if (++i == hi) + break; + } } + while (j != nvalues) idx[j++] = i; }