If we stick to 0) algebraic objects are immutable 1) algorithms defined using algebraic concepts should be implemented using algebraic objects
we end up having to create lots of algebraic objects and copy lots of data, which creates memory and performance problems. Adding support for sparse objects helps here; but the problem does not go away. To get high performance and efficient memory utilization, you need to relax one or both of these constraints. Within the linear package itself, some of our implementations basically throw out 1), grabbing data and operating on double arrays rather than using algebraic operations. I think we need to seriously consider ways to relax 0) such as Konstantin's idea of the InPlace interface, Sebastien's suggestion to use visitors or Mahout's visitors / view approaches. Do others agree? Please weigh in on the options below: 0) Start, with Konstantin's help, by fleshing out the InPlace matrix / vector interface 1) Integrate Mahout code as part of a wholesale refactoring of the linear package 2) Extend use of the visitor pattern to perform mutations "in-place" (similar to 0) in effect) Or provide other / better options. Phil --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org