Hi,
Today I was tasked to improve the performance of a classic ASP page. Rewriting the code in ASP.NET is at this moment not an option so I took up the challenge to squeeze every ounce of performance I can get out of the page.
The page consists of the basic "SELECT bla bla FROM bla" into a couple of recordssets. A while loop iterates through those recordsets and dumps <tr><td> strings. Within the while loop there is a bunch of conditionals and whatnot. There are 3 subroutines that are called which use global variables (not local variables passed as parameters).
So nothing really shocking or anything. Before I started my optimization the loop took around 15 seconds to complete. Of the 15 seconds around 6 were taken up by the sql query.
After changing a few things around I managed to get it around to 7 seconds.
The things that I have changed around are:
Instead of doing SELECT *, I selected only the columns that I needed. The query went down to on average 4 seconds. It's a pretty heavy query with views within views.
I removed all the context switching within the loop. So I changed things like <%= bla %> to Response.Write(bla).
The 3 subroutines were defined as functions, but they were used as sub (with no result). So I changed the functions to subs. Does that help?
After making my changes I found that most of the time was taken up by one of the subroutines. I didn't have time enough today to change the subroutine, but it consists of things like:
- Date functions: Dateadd, Datediff
- Array functions: Ubound(arr) and index referencing: arr(I)
- String functions: left, mid, right, lower, replace
With every page call, that subroutine is run around 1600 times.
Anybody out there have any experience with optimizing classic asp pages? Do you have any good tips for optimization? What I'm looking for is improvement of code within a do ... loop statement.
I'm an experienced ASP.NET developer and know quite a bit about perfomance improvement in ASP.NET. Classic ASP uses a different "engine" so I was wondering if anybody out there have any insights into improving the performance of classic ASP.
Thanks!
M
PS: Yes I know that classic ASP uses VBScript