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 <joebog...@gmail.com> 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 <rauldmil...@gmail.com> 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 <rogerhui.can...@gmail.com>
> 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

Reply via email to