Path: news.mathworks.com!not-for-mail
From: "qooroo " <qooroo@gmail.com>
Newsgroups: comp.soft-sys.matlab
Subject: Re: Preallocation in MATLAB R2009a
Date: Wed, 5 Aug 2009 15:50:18 +0000 (UTC)
Organization: The MathWorks, Inc.
Lines: 28
Message-ID: <h5c9nq$fsm$1@fred.mathworks.com>
References: <h5c475$639$1@fred.mathworks.com>
Reply-To: "qooroo " <qooroo@gmail.com>
NNTP-Posting-Host: webapp-03-blr.mathworks.com
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit
X-Trace: fred.mathworks.com 1249487418 16278 172.30.248.38 (5 Aug 2009 15:50:18 GMT)
X-Complaints-To: news@mathworks.com
NNTP-Posting-Date: Wed, 5 Aug 2009 15:50:18 +0000 (UTC)
X-Newsreader: MATLAB Central Newsreader 1300190
Xref: news.mathworks.com comp.soft-sys.matlab:561035


"rocwoods" <rocwoods@yeah.net> wrote in message <h5c475$639$1@fred.mathworks.com>...
> It's known that to use a matrix variable "a" with changeless size m,n,we should preallocate memory for the variable to achieve good performance.Usually,We use "a= zeros(m,n)" to preallocate.
> But I find in R2009a using "a(m,n) = 0" to preallocate is much fast than "a = zeros(m,n)",especially with large m,n. The following shows this:
> >> clear
> >> tic;a = zeros(10000,11000);toc
> Elapsed time is 1.054111 seconds.
> >> clear
> >> tic;a (10000,11000) = 0;toc
> Elapsed time is 0.000049 seconds.
> 
> I think in R2009a,"a(m,n) = 0" do NOT really assign each element of a with 0,but just allocate a certain zone in memory for a.When you visit a certain element of a,the assignment happens,  is that right? Thanks to all.
> 
> Bye the way,
> My computer's  disposition:  Intel Core2 Duo CPU T8100 @ 2.1GHz 2.1GHz,   2G memory .

I don't think so:

>>a1 = zeros(10000,11000);
>>a2(10000,11000) = 0;
>>whos
  Name         Size                Bytes  Class     Attributes

  a         10000x11000            880000000 double              
  a2        10000x11000            880000000 double  

I'm guessing the overhead comes from whatever else is in the "zeros" function.

-qooroo