Surprise...

Alex Tweedly alex at tweedly.net
Mon Aug 20 15:57:36 EDT 2018


Not really a huge surprise ... access to chunks such as 'item' and 
'line' are (potentially) slow when you are searching relatively large 
strings. So the archetypal example

repeat with i = 1 to N
    get line i of tBigString
end repeat

can get slow if N is large, because of repeatedly scanning over large 
leading sub-strings to get to line 'i'.

In your case here, although we don't know how long the lines are (or how 
many items they have in them), the number of lines is very small  (i.e. 
line 1 up to line 4), so the amount of processing needed to scan/skip 
over the first few lines is very small - even though it's done often.

If you have some sample data, or gave some characteristics of the data, 
we could perhaps comment more.

-- Alex.


On 20/08/2018 10:00, jbv via use-livecode wrote:
> Hi list,
>
> I have the following script :
>
> repeat with a = 1 to 34
>   repeat with b = 1 to 10
>    repeat with c = 1 to 11
>     repeat with d = 1 to 10
>      repeat with e = 1 to 34
>       --get item a of line 1 of tvar & tab & item b of line 2 of tvar & tab
> & item c of line 3 of tvar & tab & item d of line 4 of tvar & tab &
> item e of line 5 of tvar
>       --get T[1][a] & tab & T[2][b] & tab & T[3][c] & tab & T[4][d] & tab &
> T[5][e]
>      end repeat
>     end repeat
>    end repeat
>   end repeat
> end repeat
>
> When I run these nested loops with the line "get item a of line 1 of
> tvar...",
> it is twice faster than with the line "get T[1][a]...".
> This a surprise to me because I have used arrays for years to speed up
> things, and AFAIK it takes forever to count items and lines at each repeat
> iteration...
> Or am I missing something ?
> This is on LC9 server, on-rev account.
>
> Best,
> jbv
>
>
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode





More information about the use-livecode mailing list