---Henry Rich wrote: > The standard idiom for doing this is > > array =: (array = 0)} array ,: _
Thanks Henry, I'd remembered there was something like that and had been searching for it unsuccessfully! Can you point me to a reference to note for the future? > If array is big, you get a big boost from performing > the update in place. To do that, you have to write > > zeros =. array = 0 > inf =. ($array) $ _ > array =: zeros} array ,: inf The performance boost doesn't seem to be that big in this case and comes at the cost of space. I'm not sure if there isn't a simpler way to compare the performance of these different algorithms? M=: ((1024*1024),4)[EMAIL PROTECTED] M2=: M ts=: 6!:2 , 7!:[EMAIL PROTECTED] amZ0=: 3 : 'M=: (M=0)}M,:_' amZ1=: 3 : 0 zeros=. M = 0 inf=. ($M) $ _ M=: zeros} M ,: inf ) amZ2=: 3 : 0 dat=. ,M dat=. _ (I. dat=0)} dat M=: ($M)$dat ) amZ3=: 3 : 'M=: _&(([: I. 0 = ,@])}) M' amZ4=: 3 : 'M=: (+ _*0=]) M' ts 'amZ0''''' 0.27791011148 310380800 M=: M2 ts 'amZ1''''' 0.08244288031 444598976 M=: M2 ts 'amZ2''''' 0.11220713806 134219840 M=: M2 ts 'amZ3''''' 0.12162285989 71305856 M=: M2 ts 'amZ4''''' 0.20750486445 134219904 ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
