To read the article online, visit http://www.4GuysFromRolla.com/webtech/120299-1.shtml

Optimizing ADO Calls

By Mike Shaffer


When referencing recordset values in your code, you probably write something like this:

If rs("QuantityOrdered") < 1 then NoSale = True

There is a second way to write this code, by fully qualifying the recordset and field object references:

If rs.Fields("QuantityOrdered").Value < 1 then NoSale = True

If you refer to recordset values in your code quite a bit (and most of us do), there is a way to improve performance tremendously with very little effort. Here's the secret: when referring to recordset elements, use the ordinal form. This removes the requirement for a pseudo-dictionary lookup on the fieldname. That would mean our sample above would look like this (assuming that the field QuantityOrdered was the 13th field in our recordset):

If rs(12) < 1 then NoSale = True

Note: Since the fields in the Recordset object are ordered with their index beginning at zero, rs(12) will get the 13th element!

Here are some sample benchmarks for three runs using each method (not done under a controlled environment, but close enough to prove the point!):

Form: rs("fieldname") rs.Fields("fieldname").Value rs(x)
Results:
(in seconds)
2.967 2.936 1.650
  2.824 2.914 1.611
  2.893 2.943 1.613
Average: 2.895 2.931 1.625

Now, you may say that using the ordinal notation decreases code readability, and I would agree. Several readers have been anxious to point out that you can use constants to refer to recordset elements. Although this has a very slight performance penalty in terms of script size and initial interpreter processing, it represents a nice trade-off between code readability and efficiency, e.g.

const fldQuantityOrdered = 12 ... if rs(fldQuantityOrdered) < 1 then Nosale = True

This also has the added benefit of making changes to your code easier should your recordset ordinal positions change.

Remember, when it comes to optimizing your code for a high-volume website, be prepared and even anxious to try (and test) several techniques to obtain the desired effect. Remember that when it comes to code optimization, in some cases, the LEAST intuitive answer is the correct one.

Happy Programming!

  • By Mike Shaffer


  • Article Information
    Article Title: 4GuysFromRolla.com - Optimizing ADO Calls
    Article Author: Mike Shaffer
    Published Date: Thursday, December 02, 1999
    Article URL: http://www.4GuysFromRolla.com/webtech/120299-1.shtml


    Copyright 2017 QuinStreet Inc. All Rights Reserved.
    Legal Notices, Licensing, Permissions, Privacy Policy.
    Advertise | Newsletters | E-mail Offers