On 17/02/2014 21:50, Peter Haworth wrote:
Have to admit I'm the same. If it's more convenient codingwise to to
repeat with x=1 to whatever and I know for sure there won;t be many
iterations to go through, the speed difference is unnoticeable to the user.
I'm also curious about another aspect of this. Is it universally true that
"repeat with" is always slower than "repeat for" or only when the loop is
addressing LC chunks of one sort or another?
It's basically only when addressing chunks such as line, item or word
(when the engine needs to scan from the stat of the data to find the
specified chunk), and so the time grows order N**2 (where N is a
combination of the number of items/lines/words and the number of
chars/bytes it has to scan over -)
Addressing bytes is constant in time, so addressing each byte by
indexing grows linearly.
Addressing chars has been the same as bytes - but full Unicode may
affect that somehow.
And, btw (to my continuing astonishment), addressing backwards from the
end of the data is even slower
if we have K lines of data, then getting "line K" takes just over half
as long as getting "line -1" (see below).
Why ?
-- Alex.
put "x" into line K of tdata
replace CR with "xxx" & CR in tData
put the millisecs into t1
repeat K times
get line 1 of tData
end repeat
put the millisecs - t1 & CR after msg
put the millisecs into t1
repeat K times
get line K of tData
end repeat
put the millisecs - t1 & CR after msg
put the millisecs into t1
repeat K times
get line -1 of tData
end repeat
put the millisecs - t1 & CR after msg
gives
3
523
934
_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode