Re: matrix-ref is slow

Raymond Toy <[email protected]> 05 Nov 2002 18:02:54 -0500
Newsgroups gmane.lisp.matlisp.user
Message-ID <[email protected]>
>>>>> "rif" == rif  <[email protected]> writes:

[slow matrix-ref example snipped]

    rif> This implies to me that if I need to do a LOT of manipulating the
    rif> entries of vectors, I'm better off moving them to an array, doing the

Can you describe what kinds of manipulations you want to do?

    rif> manipulation there, then moving them back into matrix form to do
    rif> matrix operations.  Is this essentially correct, or am I missing
    rif> something?  I guess the alternate approach is to extend matlisp myself

Yes, this is correct.  matrix-ref hides the implementation details.
If we ever do packed storage, matrix-ref would hide that fact too.

The intent, however, is that, if you can, use the LAPACK routines to
do the manipulations, as you would in Matlab.

    rif> to provide "unsafe" accessors that assume more --- I'm willing to tell
    rif> it I'm using a real matrix to avoid the generic function dispatch, and
    rif> I'm willing to just run an aref directly on the store component
    rif> (although the store isn't currently exported by matlisp).

We can make store exported without any problems.  :-)  Store is very
unlikely to change since it's used everywhere to get at the underlying
array.

If you're operating on all of the elements of a vector, you may want
to look at matrix-map.  It will run your selected function over each
element of the vector and uses store and aref to do it, so it's about
as efficient as as doing it by hand.

Ray