help-octave
[Top][All Lists]

## Re: efficiency

 From: etienne grossmann Subject: Re: efficiency Date: Mon, 31 Jan 2000 17:44:25 +0000 (WET)

```  Hello,

#  Assume I have a few hundred matrices:
#  k_0004711
#  k_0004712
#  .........
#  And I want to loop through a subset of them
#  with a certain function:
#  like:

#   a=myfunc(b,c,K__00047[1-5])   # in shell regexps .... ;-)
#          call for each matrix

#  What is better/more efficient:

#  1) copying the data via a temporary variable
#  for jj=1:5
#          tmp=eval(sprintf('k_%7d',47*1000+jj));
#          a=myfunc(b,c,tmp);
#  end
#  % Which probably means copying data in core each time .......
#  % for big loops not nice .......
#  or

jj=1:5;
eval(sprintf("a = myfunc(b,c,k_%7d);",47*1000+jj)) ;

? There is a single eval, and not much code around it. Timing seems
improved, at least in the simplified case below :

octave:7> mytic(); eval(sprintf("k%04d=eye(3);",0:1000)) ; mytic()
ans = 0.29000
octave:8> mytic(); for i=1:1000, eval(sprintf("k%04d=eye(3);",i)) ; end ;
mytic()
ans = 0.66000

where mytic() returns the time since last call to mytic().

#  3) put all the crap in ONE Monster array, store the indices somewhere
#  and do it like this and making all the code realy ugly .......

#  a=myfunc(a,b,K_monster,K_indices);
#  % is here any data copied?
#  % and does it only make the code unreadible

Code make the could more complicated indeed.

Cheers,

Etienne

-----------------------------------------------------------------------
Octave is freely available under the terms of the GNU GPL.

Octave's home on the web:  http://www.che.wisc.edu/octave/octave.html
How to fund new projects:  http://www.che.wisc.edu/octave/funding.html
Subscription information:  http://www.che.wisc.edu/octave/archive.html
-----------------------------------------------------------------------

```