Repeat loop index
Mark Brownell
gizmotron at earthlink.net
Mon Jul 14 19:04:00 EDT 2003
On Monday, July 14, 2003, at 03:23 PM, Richard Gaskin wrote:
> Actually, that won't work: "repeat for each" requires you to specify a
> chunk
> variable, like this:
>
> repeat for each line tMyLine of tText
> doSomething(tMyLine)
> end repeat
>
> Why is it so much faster?
>
> When you say:
>
> get line i of tText
>
> ...it has to walk through all the characters from the beginning,
> counting
> carriage returns as it goes, until it reaches i number of lines. This
> creates a scaling problem: the first time through the loop it's pretty
> fast, but by the end it could be traversing hundreds or thousands of
> lines
> each time through. It does this with the most flexible assumption: if
> something in the loop changes tText, only this brute-force method will
> accurately count lines.
>
> The "repeat for each" form works on a different assumption: in cases
> where
> you know tText won't change during the loop, the engine can afford to
> keep a
> pointer into tText that tells it where it left off. Each time through
> the
> loop it only counts forward from where it last left off to the end of
> the
> next line, so it scales beautifully: each iteration takes almost
> exactly
> the same time as the last.
>
> And with specifying a chunk variable in the repeat statement, the
> chunk is
> already parsed and stored in that var each iteration, ready for use.
>
> --
> Richard Gaskin
Well I'll be. This might actually optimize RevBlowfish.
This:
put 1 into ic
put 1 into ix
repeat while ic <= textCryptLength
put char ix to (ix + 3) of cryptThisText into strXL
put char (ix + 4) to (ix + 7) of cryptThisText into strXL
might works as:
repeat for each char tMychunk of cryptThisText step 8
put char 1 to 4 of tMychunk into strXL
put char 5 to 8 of tMychunk into strXR
Does anyone know if "repeat for each char" works with step?
Mark
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: text/enriched
Size: 1892 bytes
Desc: not available
URL: <http://lists.runrev.com/pipermail/use-livecode/attachments/20030714/1237de5a/attachment.bin>
More information about the use-livecode
mailing list