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?
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:
ProfileStop(). As their names suggest,
ProfileStart() should be called to start the timing and
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
ProfileStop() were called.
A code example of using these two methods can be seen below. Note that the profile component's
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
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.