On Jul 20, 2006, at 7:27 PM, John Miller wrote:

put 50 into XX
put the ticks into timer
repeat until listXX is empty
  put line 1 to XX of listXX into listYY
  delete line 1 to XX of listXX
  repeat with x = 1 to (number of lines in listYY)
     doaction to line x of listYY
  end repeat
end repeat
put the ticks - timer

You'd almost certainly get even better performance with repeat for each. The problem with any loop where you are repeatedly getting line N is that the more lines there are, the longer it takes to get the last ones because you have to count through all the previous ones. Breaking it up into chunks of 50 (as you did above) improves the situation, but doesn't fix it. Throw a large enough list at it and it will choke. Repeat for each takes each line in turn, so it never has to re-count through the list. A list twice as long with take twice as long, no matter how big the lists get.

Here's an example:

repeat for each line L in listXX
  doaction to L
end repeat

If you need to know the line number as you go along, then use this:

put 0 into tLineNumber
repeat for each line L in listXX
  add 1 to tLineNumber
  doaction to L
end repeat
_______________________________________________
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to