octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Octave project involvement


From: A.B. Kinsman
Subject: Re: Octave project involvement
Date: Fri, 07 Sep 2007 08:25:16 -0400

Hi David and John,

Thanks for your input, in light of the discussion I think I will dig in
a little bit and see what else I might be able to work on.

Thanks again,

Adam Kinsman

On Fri, 07 Sep 2007 10:41:03 +0200
 David Bateman <address@hidden> wrote:
> John W. Eaton wrote:
> > Using repmat for this job is OK but can use up a lot of memory
> > unnecessarily.
> >   
> Yes that is why matlab introduced the bsxfun, to avoid the issue of
> additional memory use. The disadvantage is that for each column of
> the
> matrix it needs to do an feval which can be a bit slow.. An example
> relevant to this discussion
> 
> n = 1000;
> A = randn(1000,1000);
> B = randn(1000,1);
> t0 = cputime();
> C = A .* repmat(B, 1, n);
> cputime() - t0
> t0 = cputime();
> D = bsxfun (@(x,y) x .* y, A, B);
> cputime() - t0
> 
> with the bsxfun function in the CVS the above returns
> 
> ans =  0.14298
> ans =  0.20297
> 
> so the bsxfun function is slightly slower than the repmat, but
> doesn't
> use the additional memory. The reason bsxfun is slower than it needs
> to
> be is that it can make no assumption that the matrix type returned
> from
> the feval will be the same at each call, whereas in the case of ".*"
> it
> will be if the type of the matrices A and B above are known.
> Therefore
> an overloading of the operator (or a specialized function that does
> this
> M-V operation) should have a speed more like that given by
> 
> n = 1000;
> A = randn(1000,1000);
> B = randn(1000,1);
> B2 = repmat (B, 1, n);
> t0 = cputime();
> C = A .* B2;
> cputime() - t0
> 
> ans =  0.075989
> 
> So yes there is something to gain here.
> 
> Regards
> David
> 
> -- 
> David Bateman
>                                address@hidden
> Motorola Labs - Paris                        +33 1 69 35 48 04 (Ph) 
> Parc Les Algorithmes, Commune de St Aubin    +33 6 72 01 06 33 (Mob) 
> 91193 Gif-Sur-Yvette FRANCE                  +33 1 69 35 77 01 (Fax) 
> 
> The information contained in this communication has been classified
> as: 
> 
> [x] General Business Information 
> [ ] Motorola Internal Use Only 
> [ ] Motorola Confidential Proprietary
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]