On Sun, Feb 16, 2014 at 4:18 PM, <josef.p...@gmail.com> wrote:

> On Sun, Feb 16, 2014 at 6:15 PM,  <josef.p...@gmail.com> wrote:
> > On Sun, Feb 16, 2014 at 5:50 PM, Eelco Hoogendoorn
> > <hoogendoorn.ee...@gmail.com> wrote:
> >>
> >> My guess;
> >>
> >> First of all, you are actually manipulating twice as much data as
> opposed to
> >> an inplace sort.
> >>
> >> Moreover, an inplace sort gains locality as it is being sorted, whereas
> the
> >> argsort is continuously making completely random memory accesses.
> >>
> >>
> >> -----Original Message-----
> >> From: josef.p...@gmail.com
> >> Sent: Sunday, February 16, 2014 11:43 PM
> >> To: Discussion of Numerical Python
> >> Subject: [Numpy-discussion] argsort speed
> >>
> >> currently using numpy 1.6.1
> >>
> >> What's the fastest argsort for a 1d array with around 28 Million
> >> elements, roughly uniformly distributed, random order?
> >>
> >> Is there a reason that np.argsort is almost 3 times slower than np.sort?
> >>
> >> I'm doing semi-systematic timing for a stats(models) algorithm.
> >
> > I was using np.sort, inplace sort is only a little bit faster
> >
> > It looks like sorting first, and then argsorting is faster than argsort
> alon
> >
> > pvals.sort()
> > sortind = np.argsort(pvals)
>
> Ok, that was useless, that won't be anything I want.
>
>
I think locality is the most important thing. The argsort routines used to
move both the indexes and the array to argsort, the new ones only move the
indexes. It is a tradeoff, twice as many moves vs locality. It's probably
possible to invent an algorithm that mixes the two.

<snip>

Chuck
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to