Repeat loop optimization?
Sarah Reichelt
sarahr at genesearch.com.au
Tue Mar 23 17:36:20 EST 2004
Hi Glen,
I reckon you should be able to process all 10000 lines in one go,
without to much delay.
Re-writing your fireBig handler to use "repeat for each" which is MUCH
faster than "repeat with":
on firebig
put long time into fld sb1
put line 1 to 10000 of fld "out" into fbtemp1
put empty into sbTime1
repeat for each line L in fbTemp1
get word 1 to 2 of L
convert it to seconds
put it & cr after sbtime1
end repeat
put long time into fld eb1
end firebig
I would be interested to see how long this takes.
Cheers,
Sarah
sarahr at genesearch.com.au
http://www.troz.net/Rev/
On 24 Mar 2004, at 6:37 am, Glen Bojsza wrote:
> I tried the following experiment.
>
> I have a field with 10000 lines and I want to convert the first word
> to seconds
>
> Method 1
>
> Break the 10000 lines into 5 separate loops. The start time and end
> time was recorded for each loop - ie when a loop completed the next
> loop started.
>
> TIME TO PROCESS 21 seconds
>
> Method 2 is the same script but with fire# commented out (firebig is
> the only loop)
>
> TIME TO PROCESS 1 minute 27 seconds
>
> This is a substantial difference...can anyone give me some pointers on
> how I should optimize repeat loops. I thought that doing the one big
> loop should be as fast as the multiple loops?
>
> on mouseUp
> fireUpdate
> end mouseUp
>
> on fireUpdate
> fire1
> fire2
> fire3
> fire4
> fire5
> --firebig
> end fireUpdate
>
> on fire1
> put long time into fld s1
> put line 1 to 2000 of fld "out" into ftemp1
> repeat with l = 1 to 2000
> get word 1 of line l of ftemp1 && word 2 of line l of ftemp1
> convert it to seconds
> put it & cr after stime1
> end repeat
> put long time into fld e1
> end fire1
>
snip
> on firebig
> put long time into fld sb1
> put line 1 to 10000 of fld "out" into fbtemp1
> repeat with l = 1 to 10000
> get word 1 of line l of ftemp1 && word 2 of line l of fbtemp1
> convert it to seconds
> put it & cr after sbtime1
> end repeat
> put long time into fld eb1
> end firebig
More information about the use-livecode
mailing list