surprising filter benchmarks
Eric Chatonet
eric.chatonet at sosmartsoftware.com
Tue Jul 12 16:46:26 EDT 2005
Hi Richard,
I think the speed depends on the filter complexity.
For instance:
on mouseUp
repeat 100000
if random (2) = 1 then put "zaz" & cr after tList
else put "zbz" & cr after tList
end repeat
-----
put the milliseconds into tStart1
filter tList with "*a*"
put the milliseconds - tStart1 into tResult1
-----
put the milliseconds into tStart2
repeat for each line tLine in tList
if "a" is in tList then put tLine & cr after tNewList
end repeat
delete char -1 of tNewList
put the milliseconds - tStart2 into tResult2
-----
put "Filter: " && tResult1 & cr &"Repeat:" && tResult2
end mouseUp
Results -
Filter: 41
Repeat: 117
So may be we have to choose the right method according to the context.
Two cents that do not make life easier :-)
Le 12 juil. 05 à 22:26, Richard Gaskin a écrit :
> I figured the filter command would carry at least some overhead for
> its convenience, but I had no idea how much!
>
> I wrote the test below to compare it with walking through a list
> line by line, and the results were surprising:
>
> on mouseUp
> put fwdbCurTableData() into s -- gets 10,800 lines of
> -- tab-delimited data
> --
> -- Method 1: filter command
> --
> put format("*a*\t*r*\tr\t*\t*\t*\t*\t*") into tFilter
> put s into result1
> put the millisecs into t
> filter result1 with tFilter
> put the millisecs - t into t1
> --
> --
> -- Method 2: repeat for each
> --
> set the itemdel to tab
> put the millisecs into t
> repeat for each line tLine in s
> if item 1 of tLine contains "a" \
> AND item 2 of tLine contains "r"\
> AND item 3 of tLine is "r" then
> put tLine&cr after result2
> end if
> end repeat
> delete last char of result2
> put the millisecs - t into t2
> --
> put result1 into fld "result"
> put result2 into fld "result2"
> --
> put "Filter: "&t1 &cr& "Repeat: "&t2
> end mouseUp
>
>
>
> Results -
> Filter: 745
> Repeat: 40
>
> Did I miss something, or am I just seeing the penalty for the
> filter command's generalization?
Best Regards from Paris,
Eric Chatonet.
----------------------------------------------------------------
So Smart Software
For institutions, companies and associations
Built-to-order applications: management, multimedia, internet, etc.
Windows, Mac OS and Linux... With the French touch
Free plugins and tutorials on my website
----------------------------------------------------------------
Web site http://www.sosmartsoftware.com/
Email eric.chatonet at sosmartsoftware.com/
Phone 33 (0)1 43 31 77 62
Mobile 33 (0)6 20 74 50 86
----------------------------------------------------------------
More information about the use-livecode
mailing list