I put this in the script of a button:

on mouseUp
  repeat 10000
    add 1 to c
    put c & cr after theList
  end repeat


put the milliseconds into stTime repeat for each line L in theList get L end repeat put the milliseconds - stTime into forTime

  put the milliseconds into stTime
  repeat with n = 1 to the number of lines in theList
    get line n of theList
  end repeat
  put the milliseconds - stTime into withTime

  put forTime && withTime
end mouseUp

forTime was 7, with time was 1197.

My understanding of the issue is that in the 'with' construction, the lines have to counted from 1 to get the line you want, each time round. With a short list, this is not a problem, but when it's got to count thousands of lines (increasing by 1 everytime), it can get slow. The 'for' construction is effectively keeping a running tally of where it's got to, so is only having to add 1 each time. Also, the 'get L' above is redundant, since L already contains the data of whichever line it's got to.

Imagine having to count from 1 to 9000, then 1 to 9001, 1 to 9002 etc. as opposed to simply counting from 1 to 10000.

Cheers,

Mark
On 18 May 2005, at 17:00, jbv wrote:

for year we've been told that
    repeat for each line j in myVar
runs significantly faster than
    repeat for i=1 to number of lines in myVar

that's true, but if you use the following
    repeat with i=1 to number of lines in myVar
        get line i of myVar

and then do all your processing in the "it" variable
(and then "put it in line i of myVar" at the end of the
repeat loop if necessary), in that case the "repeat with i..."
statement seems to run as fast as "repeat for each line..."

does that mean that only the fact that each successive line
is in a variable (and hence has its content easier to access
than in a huge variable with dozens or hundreds of lines)
matters, and that it has nothing to do with the repeat
structure per se ?
_______________________________________________
use-revolution mailing list
[email protected]
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to