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 <[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