Frankly I don't see much merit if there were such optimization.
Are there use cases when it is critical?
Below aren't plausible. You can also have

  100#2
  2*i.100

etc


Oleg


On Dec 18, 2009, at 9:07 PM, Henry Rich <[email protected]> wrote:

   100000 ts 'i. 100'
2.82902e_6 1152
   100000 ts 'i. 400'
3.51904e_6 2688
   100000 ts 'i. 800'
4.16341e_6 4736


Yes, it's fast; but it appears that monad i. actually creates an array.

Wouldn't it be better to have a single copy of i. 16384 (or so), with 
data headers of all the sizes from 0 to 16384 pre-built, so that 
executing i. merely pointed to the correct header?  If you started the 
use count of each of the canned headers at 1, there would be no 
possibility of a primitive's modifying the shared i. vector.

This optimization seems obvious, so I await enlightenment from someone 
who knows how the interpreter works.

Henry Rich
----------------------------------------------------------------------
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