Efficiency question for list modification
dunbarx at aol.com
dunbarx at aol.com
Thu Mar 10 14:18:17 EST 2011
I ran this with a field "rawData" containing 5000 lines:
on mouseUp
put the ticks into aa
put fld "rawdata" into temp
put 3 into div1
put 5 into div2
repeat with y = 1 to the number of lines of temp
put item 1 of line y of temp / div1 & "," & item 2 of line y of temp / div2 into line y of temp
end repeat
put temp into fld "tresult"
put the ticks - aa
end mouseUp
Took about 2.5 seconds.
If that is too slow, what if you added a third item for each of the lines in your data field, such that the lines were numbered:
If you had:
3,6
4,7
5,8
Make it into:
1,3,6
2,4,7
3,5,8
Now you can use an array, and the ordering can be recovered since the lines contain unique identifiers.
Craig Newman
-----Original Message-----
From: FlexibleLearning <admin at FlexibleLearning.com>
To: use-livecode at lists.runrev.com
Sent: Thu, Mar 10, 2011 1:51 pm
Subject: Efficiency question for list modification
Problem:
I have a long list of several thousand lines.
Each line contains two comma-separated numbers.
I want to divide the first item of each line by one divisor, and divide the
second item of each line by a different divisor.
The list order must stay the same.
Example:
Using 2 and 5 as divisors...
10,10
12,15
8,12
would become
5,2
6,3
4,2.4
Options:
Using "repeat with n=1 to num of lines" takes far too long.
Using "repeat for each line L" either attempts to modify read-only data, or
is only 25% faster using a dumping variable.
Using split/combine will mess up the ordering (numeric array keys are not
sorted numerically with combine).
Any other ideas?
Hugh Senior
FLCo
_______________________________________________
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