Making Revolution faster with really big arrays
Dick Kriesel
dick.kriesel at mail.com
Wed Apr 13 05:41:37 EDT 2005
On 4/12/05 7:36 PM, "Dennis Brown" <see3d at writeme.com> wrote:
> ...I have two arrays 10,000 lines with 2500 items in each line...
> ...I need to pair the items together...
Do you have something like closing prices in one container and shares traded
in another container, each for the same 10,000 securities over the same
2,500 trading days? If so, do you want to calculate something like trading
volume as price * shares?
If so, then here's a way to bring together the values from one such list
with the values from another, without waiting for any chunk expressions. On
my machine, generating a 10,000 line by 2,500 item list of integers to
prepare for the test took about three minutes. Then bringing together all
the pairs of lines from two lists, as you indicated in your initial email,
took about 1.2 seconds.
So you could do many passes through your big lists before the day is done,
and not need to wait for an extension to the language.
To try it, paste the following into the script of a new stack. If I've
misunderstood or done something wrong, please let me know.
-- Dick
---------------------
global gList
on mouseUp
if gList is empty then initialize
combinePairsOfLines gList,gList
end mouseUp
on initialize
put 10000 into tLineCount
put 2500 into tItemCount
put tLineCount && tItemCount & cr
put the seconds into tSeconds
repeat with i = 1 to tLineCount
repeat with j = 1 to tItemCount
put i + j & comma after tList
end repeat
put return after tList
if i mod 1000 = 0 then put "line count so far:" && i & cr after msg
end repeat
put tList into gList -- save for reuse across edit-test cycles
put "elapsed seconds to initialize:" && \
the seconds - tSeconds & cr after msg
end initialize
on combinePairsOfLines pList1,pList2
put the long seconds into tSeconds
split pList2 using return
put 0 into i
repeat for each line tLineFromList1 in pList1
add 1 to i
put tLineFromList1 & pList2[i] into tCombinedLine
-- doSomethingWithCombinedLine tCombinedLine
end repeat
put "elapsed seconds to combine pairs:" && \
the long seconds - tSeconds & cr after msg
end combinePairsOfLines
More information about the use-livecode
mailing list