Memory allocation time cost is O(1) of data size. }. > }: has the property of bulkness, whereas 2 >/\ is "local" so it's almost like doing a >"0
d=: 1000 1000 [EMAIL PROTECTED] 1000 ts=: 6!:2 , 7!:[EMAIL PROTECTED] 5 ts '2 >/\"1 d' 0.028046 1.05862e6 5 ts '(}. > }:)"1 d' 0.0159722 1.06637e6 5 ts '(}. >"0 }:)"1 d' 0.0300995 1.06662e6 --- "R.E. Boss" <[EMAIL PROTECTED]> wrote: > I cannot confirm the performance figures of Day: > ts 'D=:10000000$d' NB. reference timing > 0.0505433 6.71098e7 > > ts'((1,2>/\]);@(<&(<./\);. 1)])D' > 0.203427 8.38894e7 > ts'((1,}:>}.);@(<&(<./\);. 1)])D' > 0.215576 1.50998e8 > > neither detect much difference in performance in: > ts '(}.>}:)D' > 0.142718 1.50996e8 > ts '(2: >/\ ])D' > 0.146728 1.67792e7 > > R.E. Boss > > -----Oorspronkelijk bericht----- > Van: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] Namens John Randall > Verzonden: vrijdag 24 maart 2006 13:54 > Aan: Programming forum > Onderwerp: Re: [Jprogramming] Closest local minimums of data > > I am aware of 2 >/\ ], but I tend to use }:>}. for prototyping and small > arrays, since I can accurately read and write it without looking anything > up. Of course there is a performance penalty for large arrays, since > }:>}. must create two intermediate arrays of size n-1 as well as the > result. > > Best wishes, > > John > > Mike Day wrote: > > As you noted, John Randall's }: > }. is of interest. > > 2 >/\ ] is a natural J/APL2 way to do it, whereas }: > }. is the J > > form of an ancient APL1 idiom for first differences and the like, > > and seems faster for smallish d, but loses out for your required > > size of vector for space requirement. However, the performance > > is pretty good with either idiom. > > > > ts =: 6!:2 , 7!:[EMAIL PROTECTED] NB. time & space > > > > D=:10000$d NB. "old" method faster > > ts'((1,2>/\]);@(<&(<./\);. 1)])D ' > > 0.000238578 85248 > > ts'((1,}:>}.);@(<&(<./\);. 1)])D ' > > 0.000155048 150464 > > > > D=:50000$d NB. both similar for time > > ts'((1,2>/\]);@(<&(<./\);. 1)])D ' > > 0.00151164 331008 > > ts'((1,}:>}.);@(<&(<./\);. 1)])D ' > > 0.00151807 592832 > > > > D=:100000$d NB. "new" method faster > > ts'((1,2>/\]);@(<&(<./\);. 1)])D NB. tacit form' > > 0.00302441 658688 > > ts'((1,}:>}.);@(<&(<./\);. 1)])D NB. tacit form' > > 0.00445364 1.18266e6 > > > > Mike > > > > > > Mikl Kurkov wrote: > > > >> On Fri, 24 Mar 2006 02:43:00 +0300, Mike Day > >> <[EMAIL PROTECTED]> wrote: > >> > >>> I was drafting this before Oleg's reply arrived. It's slightly > >>> different from his, and shows a derivation of a tacit form. > >>> ============================================================== > >>> Is this the sort of thing you need? Consider: > >> > >> Yes, exactly. > >> > >>> d > >>> 10 7 5 6 7 1 9 8 2 4 > >>> (1 , 2 >/\ ])d NB. boolean for = left > right for each pair ? > >>> 1 1 1 0 0 1 0 1 1 0 > >>> > >>> 1 1 1 0 0 1 0 1 1 0 < ;. 1 d NB. partition d by this boolean > >>> +--+-+-----+---+-+---+ > >>> |10|7|5 6 7|1 9|8|2 4| > >>> +--+-+-----+---+-+---+ > >>> 1 1 1 0 0 1 0 1 1 0(<&(<./\);. 1)d NB. required work in boxes > >>> +--+-+-----+---+-+---+ > >>> |10|7|5 5 5|1 1|8|2 2| > >>> +--+-+-----+---+-+---+ > >>> > >>> 1 1 1 0 0 1 0 1 1 0 ;@(<&(<./\);. 1)d NB. unbox > >>> 10 7 5 5 5 1 1 8 2 2 > >>> > >>> ((1,2>/\]);@(<&(<./\);. 1)])d NB. tacit form > >>> 10 7 5 5 5 1 1 8 2 2 > >>> > >>> (;@(<&(<./\);. 1)~1,2>/\])d NB. tacit avoiding one "]" 10 7 5 5 5 > >>> 1 1 8 2 2 > >>> > >>> Mike > >> > >> > >> Thanks for explanations. Your version seems to be most efficient. > >> > > ---------------------------------------------------------------------- > > 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 > __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
