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
