----- "Ted Dunning" <[EMAIL PROTECTED]> a écrit :

> Is performance in LUD normally achieved by fast element access?  Or is
> it
> done by using higher order operators on a view of a row (or column)?

This is not used for LUD but only for simpler operations (multiplication, 
addition, subtraction). For these operations, the algorithm is almost reduced 
to one operation, so a single getEntry() instead of a direct access result is 
really a performance bottleneck. This does not mean it is the only point to 
improve, but it was the easiest one.

The more I think about it, the more I feel your proposal to change the 
underlying layout is the way to go. I am ready to do it if you want once I have 
completed a first working implementation for SVD (even if this first 
implementation is not fast enough). I would however be interested if you could 
provide a few pointers to me, as you may have noticed, linear algebra is not my 
main field of activity.

What would you suggest ? How is storage handled in colt ?

Luc
 

> 
> I know the the Colt package made the argument that the latter it far
> preferable.  I also know that Jama didn't do this, but was very hard
> to
> extend as a result.
> 
> The colt approach was to require the matrices provide row, column and
> submatrix view operations and that vectors and matrices support
> functionally
> oriented destructive updates.  This can be hard for users to
> understand so
> you generally have to provide more algebraic interfaces as well, but
> it can
> work wonders for performance.
> 
> On Mon, Dec 1, 2008 at 2:52 PM, Luc Maisonobe <[EMAIL PROTECTED]>
> wrote:
> 
> > For now, one thing  that bother me is the removal of the dedicated
> code
> > that explicitely avoided getEntry(). This was added a few months ago
> for
> > performance reason, since the previous generic code was painfully
> slow.
> > The trick with the ClassCastException allows really fast check since
> the
> > virtual machine can completely optimize it out in some cases, it is
> an
> > enhancement of what was discussed here:
> > http://markmail.org/message/36fgg7vx6gzd3ziu. Our discussion at
> that
> > time was that the more common case (RealMatrixImpl) should be as
> > efficient as possible (and Ted wants now it to be even faster by
> > changing the underlying storage which is a good thing). This trick
> is
> > not beautiful perfectly generic code, it is a pragmatic way to be
> fast
> > in a common case and removing it will most probably induce poorer
> > performances.
> >
> 
> 
> 
> -- 
> Ted Dunning, CTO
> DeepDyve
> 4600 Bohannon Drive, Suite 220
> Menlo Park, CA 94025
> www.deepdyve.com
> 650-324-0110, ext. 738
> 858-414-0013 (m)

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to