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

Reply via email to