x=: a.{~ 1e7 ?@$ 256
   timer=: 6!:2

   10 timer 's=:x{~g=:/:x'
0.136961
   10 timer 's=:/:~x [ g=:/:x'
0.0765459

   10 timer '/:~x'
0.012887
   10 timer 'x{~g'
0.065751
   10 timer '/:x'
0.0606987



On Wed, Mar 5, 2014 at 11:45 AM, Roger Hui <rogerhui.can...@gmail.com>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 <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