[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
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
What about
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
-----------------------------------------------------------------------
- efficiency, Daniel Heiserer, 2000/01/31
- Re: efficiency,
etienne grossmann <=