Also the memory is less than half

   ts 'c2 T'
0.025803916 26218880
   ts 'c1 T'
0.043909495 68163200


R.E. Boss

(Add your info to http://www.jsoftware.com/jwiki/Community/Demographics )



> -----Original Message-----
> From: [email protected] [mailto:programming-
> [email protected]] On Behalf Of Roger Stokes
> Sent: donderdag 7 augustus 2014 12:03
> To: [email protected]
> Subject: Re: [Jprogramming] Memoizing (Project Euler problem 14)
> 
> Dear All,
> 
> I've come across a puzzle
> and would be glad if someone could explain it.
> 
> In a few words, I have a variation of collatzv which is a one-liner
>   (c1 below) and the very same verb spread over several lines (c2 below).
> The second is nearly twice as fast as the first.  How come?
> 
> The timings I get are
> 
>   collatzv T          0.0592513
> 
>   c1 T NB. one-liner  0.0582203
> 
>   c2 T NB. spread out 0.0352435
> 
> where T is  2 + i. 1e6
> 
> What follows is transcript of session producing these results.
> 
> Starting with Roger Hui's original collatzv:
> 
> 
>     collatzv =: 3 : '<. (2|y)} 0 1 + 0.5 3 */y'
> 
>     NB. here is my one-liner, an experiment intended to stick to
>     NB. integer arithmetic throughout.
> 
>     c1 =: 3 : '(_1 & (33 b.)) (2 | y) }  y ,: (2 + 6 * y)'
> 
>     NB. here is a spread-out version
> 
>     c2 =: 3 : 0
>    a =. 2 | y
>    b =. 2 + 6 * y
>    c =. a } y ,: b
>    (_1 & (33 b.)) c
> )
> 
>     (collatzv -: c1) T =: 2 + i. 1e6
> 1
>     (collatzv -: c2) T
> 1
> 
>     NB. comparing timings:
> 
>     compare =: (; (6!:2)) @: > "0
>     compare 'collatzv T '; 'c1 T NB. one-liner '; 'c2 T NB. spread out'
> 
>   collatzv T          0.0587746
> 
>   c1 T NB. one-liner  0.0579726
> 
>   c2 T NB. spread out 0.0340378
> 
> 
>     NB. Do we get the same effect by spreading collatzv?  No.
> 
>     collatzvs =: 3 : 0
>    a =. 0 1 + 0.5 3 */y
>    b =. 2|y
>    c =: b } a
>    <. c
> )
> 
>     (collatzv -: collatzvs) T
> 1
> 
>     compare  'collatzv T '; 'c1 T '; 'c2 T '; 'collatzvs T '
> 
>   collatzv T   0.0591852
> 
>   c1 T         0.0594112
> 
>   c2 T         0.034516
> 
>   collatzvs T  0.0597546
> 
> 
>     JVERSION
> Engine: j701/2011-01-10/11:25
> Library: 8.02.10
> Qt IDE: 1.1.3/5.3.0
> Platform: Win 64
> Installer: J802 install
> InstallPath: c:/users/homer/j64-802
> 
> 
> ----------------------------------------------------------------------
> 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