Hmmm, no you can't use
if tItem is empty then
exit repeat
end if
because it is perfectly feasible to have empty items within the middle
of the data. You would need to use
if tOffset > the number of chars in tData then exit repeat
or something like that. I'm not sure whether this would be more
efficient then "repeat with ..." or not - it depends on the internal
representation, and whether "the number of chars in variable" requires a
scan through the variable or not.
Using "the number of chars in tItem" rather than "the number of chars in
item 1 of (char tOffset to -1)" is a good idea, though I doubt if the
performance gain would be significant. In some cases (such as the
original code that triggered this thread, where you only process every
second item), putting the item into t temp variable could even cost some
performance.
But the real reason I didn't do it that way was that I was talking about
the possibility of changing the item in question within the loop, and
that means you need to use "the number of chars in the item within the
variable" at the end of the loop.
With those changes, the timings do work out about 20% faster using the
local variable tItem rather than extracting the substring a second time
- so worth doing that if you need to have the data in a temp variable,
and if you do not change the item within the variable.
-- Alex.
On 20/02/2011 09:07, Dick Kriesel wrote:
On 2/19/11 4:44 PM, "Alex Tweedly"<a...@tweedly.net> wrote:
put 1 into tCurrentItemCharOffset
repeat with i = 1 to the number of items in tData
... item 1 of (char tCurrentItemCharOffset to -1 of tData) ...
add the number of chars in item 1 of (char tCurrentItemCharOffset
to -1 of tData) + 1 to tCurrentItemCharOffset
end repeat
Hi, Alex. Since technique 3 involves counting the items and then for each
item twice extracting a substring, perhaps a technique 4 is worth comparing:
put 1 into tOffset
repeat forever -- no counting the items
put item 1 of (char tOffset to -1 of tData) into tItem -- single
extraction per item
if tItem is empty then
exit repeat
end if
add (the number of chars in tItem) + 1 to tOffset
-- do something useful with tItem
end repeat
Is it any faster on your data?
-- Dick
_______________________________________________
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
_______________________________________________
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