[Top][All Lists]

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

Re: Performance optimization (allocation inside a for loop)

From: Rob Mahurin
Subject: Re: Performance optimization (allocation inside a for loop)
Date: Thu, 2 Apr 2009 13:21:26 -0400

On Apr 2, 2009, at 12:23 PM, John W. Eaton wrote:
| > Rob Mahurin wrote:
| > > octave:29> tic; n = 1e5; retval = 1:n; toc
| > > Elapsed time is 0.000756025 seconds.
| > > octave:30> tic; n = 1e5; retval = (1:n)(1:n); toc
| > > Elapsed time is 0.00757694 seconds.
| > > octave:31> tic; n = 1e5; retval = [1:n]; toc
| > > Elapsed time is 0.0125589 seconds.
| >
| > Can someone explain the difference between "1:n" and "[1:n]"? I would | > normally write the brackets because I find that way clearer; does this
| > mean "1:n" is actually the "preferred" way?

In Octave, an expression like 1:n creates a range object, which
contains only the base, limit, and increment as double precision
values, so no matter how many elements are in the range, it only takes
a few bytes of storage (24 for the data plus some overhead for the
internal octave_value object itself).

Thanks for the explanation, John.

Any idea why (1:n)(1:n) makes a full matrix more quickly than [1:n]? Just looking at timing, it looks like [] waits for something that () () doesn't. I would have expected any difference to go the other way.


Rob Mahurin
Department of Physics and Astronomy
University of Tennessee                 865 207 2594
Knoxville, TN 37996                     address@hidden

reply via email to

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