[script optimization challenge] Multi dimensional array filtering
Brian Yennie
briany at qldlearning.com
Wed Aug 5 13:20:05 EDT 2009
Malte,
Beyond the ideas already presented, the only thing I can think of -
and this would be a bit of work - is that if there are particular
fields you know you will want to filter on, you could maintain a
*sorted* copy of dgdata. For example, if you had a copy of dgdata
sorted by name, you could filter on name very quickly using a binary
search.
> Hey all,
>
> I just try to implement a life search on a datagrid. I was doing
> this with the dgtext property. However this turns out to be too slow
> on elder machines if there are many records (30k +) Now I am trying
> to instead of setting the dgtext, to work with the dgdata. This
> could speed up the whole process quite a lot, as the data would not
> need to be turned into an array again by the data grid. Problem:
> arrays can not be filtered. So what I would like to do is find the
> quickest script that simulates array filtering in n dimensions if at
> any rate possible. My clumsy first try looks like this. This only
> "filters" the second level yet, so turning this into a function for
> n-levels deep would be ideal. :)
>
> on mouseUp
> local testarray,tprocess,test
> repeat with i=1 to 30000
> put any item of "meier,müller,john,doe" into testarray[i]["name"]
> end repeat
> answer the number of lines of the keys of testarray
> put the millisecs into test
> put the keys of testarray into tprocess
> repeat for each line theLine in tprocess
> if testarray[theline]["name"]="john" then
> delete variable testarray[theline]
> end if
> end repeat
> answer the number of lines of the keys of testarray&cr&the
> millisecs-test
> end mouseUp
>
> This runs in 31 ms on my machine (Intel MacBook first gen, 2.16
> GHz). I would like to have this quicker if possible. Also I´d like
> the runtime on your machines, especially Macs pre Intel era.
>
> Any thoughts highly appreciated.
>
> All the best,
>
> Malte
More information about the use-livecode
mailing list