On Thu, Oct 14, 2010 at 5:34 PM, Michael Grant <[email protected]> wrote:
> The extra good news is that it also seems to be faster to use your method
> Sean, from about two to ten times as fast. You need to be running about 5000
> iterations to see any real difference, but it seems faster nonetheless.
>
> Thanks for that! I love (read: LOVE) learning better ways.
Well, there are lots of ways of making it faster still.
Using cfscript instead of tags will remove the generation of
whitespace which will be faster.
Removing the wasFound variable altogether and testing if (
structKeyExists( found, form[x] ) ) will be faster. You only need to
store true in the found struct (the key is the value) which will
remove another form dereference... Converting the list (of fieldnames)
to an array and looping over that will be faster too.
<cfscript>
// assumes ACF9 / Railo 3.2:
timeStart = getTickCount();
for ( a = 1; a <= iter; ++a ) {
found = {};
fields = listToArray( form.fieldNames );
for ( f in fields ) {
v = form[f];
if ( structKeyExists( found, v ) ) {
// logic to handle a duplicate
} else {
found[v] = true;
}
}
}
writeOutput( 'structKeyExists: ' & ( getTickCount() - timeStart ) & '<br />' );
</cfscript>
--
Sean A Corfield -- (904) 302-SEAN
Railo Technologies, Inc. -- http://getrailo.com/
An Architect's View -- http://corfield.org/
"If you're not annoying somebody, you're not really alive."
-- Margaret Atwood
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Order the Adobe Coldfusion Anthology now!
http://www.amazon.com/Adobe-Coldfusion-Anthology/dp/1430272155/?tag=houseoffusion
Archive:
http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:338222
Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm
Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm