M. can also affect space benchmarks. e.g. fib=: 3 : 0 M. if. 1>:y do. y else. (fib y-1)+fib y-2 end. )
7!:2 'fib 32' 47552 7!:2 'fib 32' 832 7!:2 'fib 32' 832 (reload script defining fib) ts=: 6!:2 , 7!:[EMAIL PROTECTED] ts 'fib 32' 1.34095e_5 47552 ts 'fib 32' 1.25714e_5 832 ----- Original Message ----- From: Roger Hui <[EMAIL PROTECTED]> Date: Sunday, September 30, 2007 14:24 Subject: Re: RE: [Jprogramming] stack overflow To: Programming forum <[email protected]> > Using M. can indeed provide a significant performance boost, but > benchmarks on expressions using M. need to be done with care, > since the second time such an expression is executed can be > much faster than the first. > > fib=: 3 : 0 M. > if. 1>:y do. y else. (fib y-1)+fib y-2 end. > ) > 6!:2 'fib 32' > 0.016037 > 6!:2 'fib 32' > 3.96698e_5 > 6!:2 'fib 32' > 3.88318e_5 > > In ts 'V1 3000' is the time done first > or the space is done first? > If ts=:6!:2 , 7!:[EMAIL PROTECTED] , then it depends on > whether the left tine of > a fork is done first or the right tine. > > (1!:2&[EMAIL PROTECTED]: , 1!:2&[EMAIL PROTECTED]:) 12 > 24 > 144 > 144 24 > > That is, the right tine is done first. Therefore > in ts blah > the space is done first, which "primed the pump" and made > the time look better than it really is. > > > > ----- Original Message ----- > From: "R.E. Boss" <[EMAIL PROTECTED]> > Date: Sunday, September 30, 2007 12:40 > Subject: RE: [Jprogramming] stack overflow > To: 'Programming forum' <[email protected]> > > > If your V is defined a bit different you can use (the new) M. > > and get quite > > a performance improvement. > > > > V1=: ((>@:{.(V_ltk;V_gtk)>@:{:)@:V1@:<:)` > > ((b$~+/S<:k);(b$~16,~+/S>k)"0)@.(0=]) M. NB. J602; > line wrap! > > > > ts'V1 3000' > > 0.0011774627 4692672 > > > > much faster than > > > > ts'(>@:{.(V_ltk;V_gtk)>@:{:)^:3000 > > ((b$~+/S<:k);(b$~16,~+/S>k)"0)0'0.37991681 57280 > > > > (V1 3000)- > > > :(>@:{.(V_ltk;V_gtk)>@:{:)^:3000((b$~+/S<:k);(b$~16,~+/S>k)"0)0 > NB. line wrap! > > 1 > > > > The stack problem also disappeared! > > > > ts'V 3000' > > |stack error: V > > | V 3000 > > > > It seems M. changes performance programming drastically. ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
