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

Reply via email to