Repeats repeated

Terry Vogelaar terry at discovery.nl
Sun Nov 3 01:20:01 EST 2002


Hi all,

Last week I asked a question about filtering the double lines in a var 
with many lines. The list helped very well by pointing out that I 
shouldn't use "repeat with", but "repeat for each", which brought the 
processing time back from 60 hours to 4 seconds (!)

So I tried the same technique with another script that has a triple 
repeat loop. The var "t" contains about 150 short lines and the script 
is intended to put every possible combination of 3 lines of t into a 
field:

   repeat with f1 = 1 to the number of lines of t - 2
     put line f1 of t into g1
     repeat with f2 = f1+1 to the number of lines of t - 1
       put line f2 of t into g2
       repeat with f3 = f2+1 to the number of lines of t
        put line f3 of t into g3
        put g1&","&g2&","&g3& return after fld "uitvoer"
       end repeat
     end repeat
   end repeat

That took 101 seconds. So I tried to speed it up with what I learned 
about "repeat for each":

   put line 1 to -3 of t into t1
   put 0 into f1
   repeat for each line g1 in t1
     add 1 to f1
     put line f1+1 to -2 of t into t2
     put 0 into f2
     repeat for each line g2 in t2
       add 1 to f2
       put line f2+1 to -1 of t into t3
       repeat for each line g3 in t3
         put g1&","&g2&","&g3& return after fld "uitvoer"
       end repeat
     end repeat
   end repeat

364 seconds! And I thought it would be faster!  It involved some extra 
vars, but since it is not much data processed, I don't think memory 
issues could explain this.

Any thoughts why this is much slower than the original script and how I 
can speed this up?

Terry





More information about the use-livecode mailing list