Mercurial > hg > octave-nkf
comparison src/ov-re-mat.cc @ 10273:3a8c13b71612
implement special-case optimization for sort of index vectors
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Mon, 08 Feb 2010 11:16:52 +0100 |
parents | cd96d29c5efa |
children | 57a59eae83cc |
comparison
equal
deleted
inserted
replaced
10272:272179888089 | 10273:3a8c13b71612 |
---|---|
269 retval = octave_base_matrix<NDArray>::diag (k); | 269 retval = octave_base_matrix<NDArray>::diag (k); |
270 | 270 |
271 return retval; | 271 return retval; |
272 } | 272 } |
273 | 273 |
274 octave_value | |
275 octave_matrix::sort (octave_idx_type dim, sortmode mode) const | |
276 { | |
277 // If this matrix is known to be a valid index, and we're doing a vector sort, | |
278 // sort via idx_vector which may be more efficient occassionally. | |
279 if (idx_cache && mode == ASCENDING && ndims () == 2 | |
280 && ((dim == 0 && matrix.columns () == 1) || (dim == 1 && matrix.rows () == 1))) | |
281 { | |
282 return index_vector ().sorted (); | |
283 } | |
284 else | |
285 return octave_base_matrix<NDArray>::sort (dim, mode); | |
286 } | |
287 | |
288 octave_value | |
289 octave_matrix::sort (Array<octave_idx_type> &sidx, octave_idx_type dim, | |
290 sortmode mode) const | |
291 { | |
292 // If this matrix is known to be a valid index, and we're doing a vector sort, | |
293 // sort via idx_vector which may be more efficient occassionally. | |
294 if (idx_cache && mode == ASCENDING && ndims () == 2 | |
295 && ((dim == 0 && matrix.columns () == 1) || (dim == 1 && matrix.rows () == 1))) | |
296 { | |
297 return index_vector ().sorted (sidx); | |
298 } | |
299 else | |
300 return octave_base_matrix<NDArray>::sort (sidx, dim, mode); | |
301 } | |
274 octave_value | 302 octave_value |
275 octave_matrix::convert_to_str_internal (bool, bool, char type) const | 303 octave_matrix::convert_to_str_internal (bool, bool, char type) const |
276 { | 304 { |
277 octave_value retval; | 305 octave_value retval; |
278 dim_vector dv = dims (); | 306 dim_vector dv = dims (); |