From help-octave-request at bevo dot che dot wisc dot edu Tue Feb 1 01:41:22 2000 Subject: Re: efficiency From: Daniel Heiserer To: etienne at isr dot isr dot ist dot utl dot pt Cc: help-octave at bevo dot che dot wisc dot edu Date: Tue, 01 Feb 2000 08:40:30 +0100 etienne at anonimo dot isr dot ist dot utl dot pt wrote: > > 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() Wow. I didn't think of this. VERY nice ;-) An implicit loop. Cool. is the mytic your private routine? I dont have it. > 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 > Thanks Daniel ----------------------------------------------------------------------- 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 -----------------------------------------------------------------------