​Thanks Marshall,
That is pretty much what I expected (i.e. + and * have been optimised and
+. hadn't). I understand and agree that tradeoffs need to made as to what
to improve - developer resource is finite!
Thanks for the performance workaround.

Pascal, I suspect the same answer applies to the behaviour you describe - (
+/"1 ) is a more common operation and has been more heavily optimised than
( +/@:|: ).

Thanks too for your, would work in the test case but for arrays of more
than 2 dimensions ( +/&.|: ) is equivalent to ( +/"1 ) whereas ( +/@|: ) is
not.

Ric


On Sat, Mar 14, 2015 at 3:23 PM, 'Pascal Jasmin' via Programming <
[email protected]> wrote:

>   timespacex '+./@:|: TST'
> 0.190104 1.34221e8
>   timespacex '+./"1 TST'
> 0.948082 1.67805e7
>
> surprised that this is slower though:
>
>   10 timespacex '+/"1 TST'
> 0.0200154 1.67798e7
>   10 timespacex '+/@:|: TST'
> 0.0956639 8.38889e7
>
>
> ________________________________
> From: Tikkanz <[email protected]>
> To: Programming JForum <[email protected]>
> Sent: Friday, March 13, 2015 9:26 PM
> Subject: [Jprogramming] Performance query
>
>
> I noticed some interesting behaviour when trying to simplify a J sentence.
> The simple J-like solution was slower than the more complex proscriptive
> one.
>
> Given an array:
>    TST=: i. 2e6 3
>
> To sum the columns with each other (i.e. sum the rows), I can
>   a) extract each column and the lists together:
>
>    (0&{"1 + 1&{"1 + 2&{"1) TST
>
>   b) sum the items in each row
>
>    +/"1 TST
>
> Sentences a) and b) are equivalent:
>    (+/"1 -: (0&{"1 + 1&{"1 + 2&{"1)) TST
> 1
>
> And as I expected, the simpler sentence is faster and leaner.
>    10 timespacex '(0&{"1 + 1&{"1 + 2&{"1) TST'
> 0.0439944 5.03372e7
>    10 timespacex '+/"1 TST'
> 0.0138071 1.67798e7
>
> If I use GCD instead of Plus, the approaches are still equivalent, but the
> simpler sentence is much slower (while still being leaner).
>    (+./"1 -: 0&{"1 +. 1&{"1 +. 2&{"1) TST
> 1
>    10 timespacex '(0&{"1 +. 1&{"1 +. 2&{"1) TST'
> 0.132607 5.03372e7
>    10 timespacex '+./"1 TST'
> 0.943093 1.67805e7
>
> Is this to be expected because of differences in the nature of the GCD and
> Plus operations, or does it reflect an opportunity for future optimisation
> of ( +. ) ?
> ----------------------------------------------------------------------
> 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

Reply via email to