My guess would be that it has something to do with cache coherence.

Indexing is random access, sorting is more sequential in nature.

But that's just a guess, because I did not cheat and look at the source or
anything (at least... not today).

Thanks,

-- 
Raul



On Wed, Mar 5, 2014 at 2:45 PM, Roger Hui <[email protected]> wrote:

> That's my alternative faster expression as well.  But the more interesting
> question is, why is it faster?  Since we do the grade in both cases, the
> comparison is between /:~x and g{x (or x{~g) with g pre-computed.  The
> answer does not depend knowledge specific to J.
>
>
>
>
>
> On Wed, Mar 5, 2014 at 11:38 AM, Joe Bogner <[email protected]> wrote:
>
> > Sorting and grading separately seems faster
> >
> > timer=: 6!:2
> > x=:(1e7 $ 26?26) { 'abcdefghijklmnopqrstuvwxyz'
> > NB. incumbent
> > timer 's=: x{~g=: /:x'
> > 0.0914002
> >
> > NB. alternate
> > timer 'S=: /:~x[G=: /:x'
> > 0.0668677
> >
> >  s-:S
> > 1
> >    G-:g
> > 1
> >
> >
> > I am speculating that sorting does it in place? which is faster than
> > the selection from the grade
> >
> >
> >
> > On Wed, Mar 5, 2014 at 2:02 PM, Raul Miller <[email protected]>
> wrote:
> > > Hmm...
> > >
> > > G=:a.i.S=:/:~x
> > > is faster.
> > >
> > > But while s-:S, g and G are different.
> > >
> > > So I'm drawing a blank here, on how to make the grade.
> > >
> > > Thanks,
> > >
> > > --
> > > Raul
> > >
> > >
> > >
> > > On Wed, Mar 5, 2014 at 1:52 PM, Roger Hui <[email protected]>
> > wrote:
> > >
> > >> Suppose x is a long vector of characters and you need both its sort
> and
> > its
> > >> grade.  Can you do it faster than s=: x{~g=: /:x ?
> > >>
> > >> Posed this way, the answer is of course yes.  But how, and why is it
> > >> faster?
> > >> ----------------------------------------------------------------------
> > >> For information about J forums see
> http://www.jsoftware.com/forums.htm
> > >>
> > > ----------------------------------------------------------------------
> > > For information about J forums see http://www.jsoftware.com/forums.htm
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
> >
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to