Oh, I forgot to mention in response to comments about the "accuracy" of getTickCount(): the documentation for getTickCount() says that it's not "accurate" to within anything -- so you can't equate getTickCount() measurements to actual time in any meaningful way -- but you can say that they have similar averages and therefore if gettickcount indicates 50 for one operation and 100 for another operation it's a reasonable assumption that the second operation is likely to take an average of 2x the processing time as the first operation.
Although since there are many many variables which can affect this ( what other operations the server is performing at the time, how many simultanous requests are being made for the same process, etc. ) it is just an assumption and that's why I say, it's not real load-testing. A real load-testing tool would hit the page as though it were a few to a few dozen to a few hundred simultaneous users with varying amounts of repetition and produce a table with a list of values showing how both methods scale upward with traffic, which this time test does not. Isaac Certified Advanced ColdFusion 5 Developer www.turnkey.to 954-776-0046 > You can always change the script to perform the loop > between the > gettickcount() references, or to perform 2nd inside loop > to pad the results > a bit. >> I haven't tried running it yet, but this profiling >> code seems suspicious. I don't think CF's >> GetTickCount() function has sufficiently small >> resolution that the execution time of 10 or 20 CF >> statements can be meaningfully measured. My >> recollection was that CF5's GetTickCount was only >> accurate within 10ms or so.... >> --- "S. Isaac Dealey" <[EMAIL PROTECTED]> wrote: >>> Here's a rudimentary test case. >>> >>> What's really interresting about this test is that, >>> although the sum total >>> time required to perform 10000 ( or however many ) >>> try-catch blocks to >>> accomplish roughly the same thing as the <cfswitch> >>> statements, is about 7-8 >>> times as long, the maximum and average times in >>> _both_ cases are identical, >>> regardless of how many iterations are used. Or at >>> least, this has been the >>> case in my testing... >>> >>> Admittedly, this isn't real load testing, it's just >>> a rudimentary time test, >>> so it should be taken with a grain of salt. It also >>> doesn't compare the >>> try-catch to a <cfif> ladder, which might also be a >>> relevant comparison. >>> >>> In any event, here's the code if you'd like to see >>> the times for yourself: >>> >>> <cfparam name="url.iterations" type="numeric" >>> default="10000"> >>> >>> <cfset request.times_try = ArrayNew(1)> >>> <cfset request.times_switch = arraynew(1)> >>> >>> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 >>> Transitional//EN"> >>> <html><head><title>Try-Catch Time >>> Test</title></head><body> >>> >>> <cfloop index="iteration" from="1" >>> to="#url.iterations#"> >>> <cfset starttime = gettickcount()> >>> <cfset candrive = false> >>> <cfset candrink = false> >>> <cfset myage = RandRange(1,35)> >>> >>> <cfswitch expression="#myage#"> >>> <cfcase >>> value="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15" >>> delimiters=","> >>> <cfset message="this is a tyke"> >>> </cfcase> >>> <cfcase value="16,17,18,19,20" delimiters=","> >>> <cfset candrive = true> >>> <cfset message="this is a teen"> >>> </cfcase> >>> <cfdefaultcase> >>> <cfset candrink = 1> >>> <cfset message="this is an adult"> >>> </cfdefaultcase> >>> </cfswitch> >>> <cfset executiontime = gettickcount() - starttime> >>> <cfset temp = >>> arrayappend(request.times_switch,executiontime)> >>> >>> <cfset starttime = gettickcount()> >>> <cfset candrive = false> >>> <cfset candrink = false> >>> <cfset myage = RandRange(1,35)> >>> >>> <cftry> >>> <cfif myage lt 16><cfthrow type="tyke"></cfif> >>> <cfset candrive = true> >>> >>> <cfif myage lt 21><cfthrow type="teen"></cfif> >>> <cfset candrink = true> >>> <cfset message="this is an adult"> >>> >>> <cfcatch type="tyke"><cfset message="this is a >>> tyke"></cfcatch> >>> <cfcatch type="teen"><cfset message="this is a >>> teen"></cfcatch> >>> </cftry> >>> <cfset executiontime = gettickcount() - starttime> >>> <cfset temp = >>> arrayappend(request.times_try,executiontime)> >>> </cfloop> >>> >>> <cfoutput> >>> Iterations: #arraylen(request.times_switch)# - >>> #arraylen(request.times_try)# >>> <table> >>> >>> >> <tr><td>method</td><td>min</td><td>max</td><td>avg</td><t >> d >> >sum</td></tr> >>> <tr><td>switch</td> >>> <td>#ceiling(arraymin(request.times_switch))#</td> >>> <td>#ceiling(arraymax(request.times_switch))#</td> >>> <td>#ceiling(arrayavg(request.times_switch))#</td> >>> <td>#ceiling(arraysum(request.times_switch))#</td> >>> </tr> >>> <tr><td>try</td> >>> <td>#ceiling(arraymin(request.times_try))#</td> >>> <td>#ceiling(arraymax(request.times_try))#</td> >>> <td>#ceiling(arrayavg(request.times_try))#</td> >>> <td>#ceiling(arraysum(request.times_try))#</td> >>> </tr> >>> </table> >>> </cfoutput> >>> </body> >>> >>> >>> Isaac Dealey >>> Certified Advanced ColdFusion 5 Developer >>> >>> new epoch >>> www.turnkey.to >>> 954-776-0046 >>> >>> >> ===== >> I-Lin Kuo >> Macromedia CF5 Advanced Developer >> Sun Certified Java 2 Programmer >> __________________________________________________ >> Do you Yahoo!? >> Faith Hill - Exclusive Performances, Videos & More >> http://faith.yahoo.com >> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> ~ >> ~~~~~~~~~~~| >> Archives: >> http://www.houseoffusion.com/cf_lists/index.cfm?forumid=4 >> Subscription: >> http://www.houseoffusion.com/index.cfm?sideb >> ar=lists&body=lists/cf_talk >> FAQ: http://www.thenetprofits.co.uk/coldfusion/faq >> Signup for the Fusion Authority news alert and keep up >> with the latest news in ColdFusion and related topics. >> http://www.fusionauthority.com/signup.cfm > Isaac > Certified Advanced ColdFusion 5 Developer > www.turnkey.to > 954-776-0046 > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > ~~~~~~~~~~~| > Archives: > http://www.houseoffusion.com/cf_lists/index.cfm?forumid=4 > Subscription: http://www.houseoffusion.com/index.cfm?sideb > ar=lists&body=lists/cf_talk > FAQ: http://www.thenetprofits.co.uk/coldfusion/faq > Your ad could be here. Monies from ads go to support these > lists and provide more resources for the community. > http://www.fusionauthority.com/ads.cfm ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| Archives: http://www.houseoffusion.com/cf_lists/index.cfm?forumid=4 Subscription: http://www.houseoffusion.com/index.cfm?sidebar=lists&body=lists/cf_talk FAQ: http://www.thenetprofits.co.uk/coldfusion/faq Structure your ColdFusion code with Fusebox. Get the official book at http://www.fusionauthority.com/bkinfo.cfm

