When you think ASP, think...
Recent Articles
All Articles
ASP.NET Articles
Related Web Technologies
User Tips!
Coding Tips

Sample Chapters
JavaScript Tutorials
MSDN Communities Hub
Official Docs
Stump the SQL Guru!
XML Info
Author an Article
Print this page.
Published: Wednesday, December 27, 2000

Timing ASP Execution using a Profiling Component

With any programming task, be it a Win32 desktop application or a large, data-driven eCommerce Web site, being able to create fast executing code is essential. No one wants to have to wait for their application to execute or their eCommerce order to process. In order to turn a slow ASP page into a faster ASP page, though, it is essential to be able to determine what part (or parts) of the ASP page are running slower than the others. So... how does one determine the execution time of various parts of an ASP page?

- continued -

There are a number of ways to accomplish to the millisecond timing using just VBScript or JScript code in an ASP page. In an article by Mike Shaffer, Timing the Execution Times of your ASP Scripts, a VBScript version of a script-only stopwatch is presented; in the FAQ How can I time the execution speed of my ASP pages to the millisecond?, Richard Lowe demonstrates how to accomplish a script-only timing routine using JScript; a popular article at LearnASP.com, Measuring Code Speed, presents VBScript code to accomplish the same.

While a script-only approach is nice, I find a component-based approach a bit cleaner. Rather than having to embed script functions into your ASP page, you simply register the component and instantiate it when needed. IIS Dev/AlphaSierra puts out a very easy to use and free profiling component. This component can be freely downloaded from: http://www.alphasierrapapa.com/IisDev/Downloads/profiler2.zip and contains a short help file and demo.

The component only contains four methods and, for this article, we will only focus on two: ProfileStart() and ProfileStop(). As their names suggest, ProfileStart() should be called to start the timing and ProfileStop() should be called when you want to stop timing and get the elapsed time difference. Note that ProfileStop() returns the elapsed time in ticks (tenths of milliseconds) between when ProfileStart() and ProfileStop() were called.

A code example of using these two methods can be seen below. Note that the profile component's ProgID is Softwing.Profiler:

  'Create an instance of the profiling component
  Dim objProfiler
  Set objProfiler = Server.CreateObject("Softwing.Profiler")

  'Begin timing the execution
  'List the most popular FAQs
  Dim objConn
  Set objConn = Server.CreateObject("ADODB.Connection")
  objConn.Open "DSN=FAQs"

  Dim strSQL
  strSQL = "sp_Popularity"

  Dim objRS
  Set objRS = Server.CreateObject("ADODB.Recordset")
  objRS.Open strSQL, objConn

  ' *** List the FAQs (cut for brevity) ***
  objRS.Close            'Clean up!
  Set objRS = Nothing
  Set objConn = Nothing

  'Determine how long the processing took
  Dim dblTimeElapsed
  dblTimeElapsed = objProfiler.ProfileStop()
  Response.Write "<p>Time Elapsed: " & dblTimeElapsed

  Set objProfiler = Nothing
[View a live demo!]

Note that to start the timing a call to the ProfileStart() method is made. Then, once we are done with the portion of code we are interested in timing, a call to the ProfileStop() method is made, with its return result saved to a variable (dbTimeElapsed) for later display. That's all there is to it! Using the profiler to time particular chunks of code in an ASP script can help you zero in on what block (or blocks) of code are taking the longest to execute, which should then educate you on where to spend time to optimize your code.

Happy Programming!


  • Download the Profiler Component
  • View the live demo!

  • ASP.NET [1.x] [2.0] | ASPFAQs.com | Advertise | Feedback | Author an Article