Hi Roger, Running J 701 on my iPad and on my laptop gets similar results to yours.
Running J 6.02 on the laptop still consistently shows the differences I posted, so my guess is now that J 7.01 handles 1: better than J 602 (sheepishly) cheers, bob On 2012-11-20, at 9:04 PM, Roger Hui wrote: > I think you need to take more care in doing benchmarks. What I got just > now: > > 10 timer 'idMate1 9000' > 0.110233 > 10 timer 'idMatt1 9000' > 0.125659 > 10 timer 'idMatt2 9000' > 0.106581 > 10 timer 'idMatt3 9000' > 0.120995 > > > > On Tue, Nov 20, 2012 at 5:48 PM, bob therriault <bobtherria...@mac.com>wrote: > >> Wow, would not have expected that , Devon :) >> >> After testing a substantially reduced challenge on my laptop (Devon, you >> have some serious metal behind your J installation!) >> idMate1=: 3 : '(2$y)$(>:y){.1' NB. Explicit and fast >> (10) 6!:2 'idMate1 &.> 9000 ' >> 0.120056 >> idMatt1=: (2$])$1{.~>: NB. Tacit and fast >> (10) 6!:2 'idMatt1 &.> 9000 ' >> 0.11531 >> idMatt2=: ,~ $ >: {. 1: NB. Tacit and slow >> (10) 6!:2 'idMatt2 &.> 9000 ' >> 0.510053 >> >> I am guessing that the 1: is the culprit and that these verbs may be used >> rarely enough that they don't get the benefit of special code >> >> idMatt3=: ,~ $ 1{.~ >: NB. Same as idMatt2 without use of 1: >> (10) 6!:2 'idMatt3 9000 ' >> 0.114926 >> >> Thanks for the insight Devon, as I await Roger's clarification if I have >> guessed wrong. :) >> >> Cheers, bob >> >> On 2012-11-20, at 5:12 PM, Devon McCormick wrote: >> >>> Here's what I get for timings for some of these methods: >>> >>> NB. Various ways to create ] x ] identity mat. >>> idMat0=: =@:i. >>> idMat1=: 3 : '(2$y)$(>:y){.1' NB.* faster, scales better >>> idMat2=: ,~ $ >: {. 1: >>> >>> (10) 6!:2 'idMat0 &.> 36000 38000 40000 42000 44000 46000 48000 50000' >>> 21.7756 >>> (10) 6!:2 'idMat1 &.> 36000 38000 40000 42000 44000 46000 48000 50000' >>> 9.55495 >>> (10) 6!:2 'idMat2 &.> 36000 38000 40000 42000 44000 46000 48000 50000' >>> 23.0792 >>> >>> If you need a *:5e4 identity matrix, you're in trouble. >>> >>> >>> On Tue, Nov 20, 2012 at 6:04 PM, bob therriault <bobtherria...@mac.com >>> wrote: >>> >>>> Devon, >>>> >>>> I like that, or another tacit option >>>> >>>> idMat1=: ,~ $ >: {. 1: >>>> idMat1 6 >>>> 1 0 0 0 0 0 >>>> 0 1 0 0 0 0 >>>> 0 0 1 0 0 0 >>>> 0 0 0 1 0 0 >>>> 0 0 0 0 1 0 >>>> 0 0 0 0 0 1 >>>> >>>> Cheers, bob >>>> >>>> On 2012-11-20, at 1:33 PM, Devon McCormick wrote: >>>> >>>>> I used to have a named verb "idMat" in my own utilities library that >> was >>>>> defined this way: >>>>> idMat=: =@:i. >>>>> >>>>> but testing this on large arguments led me to formulate this >>>>> idMat=: 3 : '(2$y)$(>:y){.1' NB.* faster and scales better >>>>> >>>>> or, the same thing tacitly: >>>>> idMat=: (2 $ ]) $ 1 {.~ >: >>>>> >>>>> >>>>> On Tue, Nov 20, 2012 at 2:29 PM, Don & Cathy Kelly <d...@shaw.ca> >> wrote: >>>>> >>>>>> A key point that dawned on me, after reading all the helpful comments >>>> and >>>>>> suggestions that have come in, is that I don't need a verb- just a >> noun >>>> - so >>>>>> y=: 2 3 4 2 2 3 (it also works for an n,n array) >>>>>> >>>>>> ] u=:=i.# y >>>>>> >>>>>> 1 0 0 0 0 0 >>>>>> 0 1 0 0 0 0 >>>>>> 0 0 1 0 0 0 >>>>>> 0 0 0 1 0 0 >>>>>> 0 0 0 0 1 0 >>>>>> 0 0 0 0 0 1 >>>>>> >>>>>> and I can use u*y for different 'y''s ( as long as the # is the >>>> same) >>>>>> to get the desired diagonal elements with off diagonal elements 0 >>>>>> I want this because I want to add to the diagonal elements of a >> matrix. >>>>>> This is for a Newton Raphson based power system load flow. >>>>>> >>>>>> Thanks to all, >>>>>> Don >>>>>> >>>>>> >>>>>> >>>>>> On 20/11/2012 8:24 AM, Roger Hui wrote: >>>>>> >>>>>>> http://www.jsoftware.com/**jwiki/Essays/Identity%20Matrix< >>>> http://www.jsoftware.com/jwiki/Essays/Identity%20Matrix>: 34 different >>>> ways >>>>>>> to generate the identity matrix of order n; the first is =@i. and the >>>> last >>>>>>> is _&q:@p:@i. >>>>>>> ------------------------------**------------------------------** >>>>>>> ---------- >>>>>>> For information about J forums see >>>> http://www.jsoftware.com/**forums.htm< >> http://www.jsoftware.com/forums.htm> >>>>>>> >>>>>>> >>>>>> >>>> >> ------------------------------**------------------------------**---------- >>>>>> For information about J forums see >>>> http://www.jsoftware.com/**forums.htm< >> http://www.jsoftware.com/forums.htm> >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Devon McCormick, CFA >>>>> ^me^ at acm. >>>>> org is my >>>>> preferred e-mail >>>>> ---------------------------------------------------------------------- >>>>> For information about J forums see http://www.jsoftware.com/forums.htm >>>> >>>> ---------------------------------------------------------------------- >>>> For information about J forums see http://www.jsoftware.com/forums.htm >>>> >>> >>> >>> >>> -- >>> Devon McCormick, CFA >>> ^me^ at acm. >>> org is my >>> preferred e-mail >>> ---------------------------------------------------------------------- >>> 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