When you think ASP, think...
Recent Articles
All Articles
ASP.NET Articles [1.x] [2.0]
ASPFAQs.com
Message Board
Related Web Technologies
User Tips!
Coding Tips
Search

Sections:
Book Reviews
Sample Chapters
Commonly Asked Message Board Questions
Headlines from ASPWire.com
JavaScript Tutorials
MSDN Communities Hub
Official Docs
Security
Stump the SQL Guru!
Web Hosts
XML Info
Information:
Advertise
Feedback
Author an Article
Technology Jobs



















internet.com
IT
Developer
Internet News
Small Business
Personal Technology

Search internet.com
Advertise
Corporate Info
Newsletters
Tech Jobs
E-mail Offers
ASP ASP.NET ASP FAQs Message Board Feedback ASP Jobs
Print this page.

Product Manager, Testing (PA)
Next Step Systems
US-PA-Wayne

Justtechjobs.com Post A Job | Post A Resume

Published: Monday, September 25, 2000

StrCat.Catter - An Efficient String Concatenation Component
By Michael Balloni


I wrote this component - StrCat.Catter - because string concatenation in Visual Basic (Script) has poor performance characteristics. I found that code like this:

- continued -

<%
  Dim rs
  Set rs = ExecuteSql("SELECT Username FROM Users")

  Dim some_str
  some_str = ""

  do until rs.EOF
    some_str = some_str & rs(0) & "<br>" & vbCrLf
    rs.MoveNext
  loop

  Response.Write some_str
%>

performed very poorly. The code took a long time to execute, during which time the processor was totally saturated. I found articles on MSDN stating that this type of code was a bad idea, and I've heard that this type of concatenation results in run times that are proportional to the square of the number of concatenations. There are times when a solution based on passing strings - instead of passing function pointers or function objects capable of outputting strings - is favorable. For example, let's say I have a general routine that asks the user to verify their billing information before they make a purchase, and this routine needs to output a summary of what the user is buying. You might be tempted to say:

<%
  ' Output your purchase summary...
  ' ...then output your billing information verification system.
%>

but what if your billing information verification code needs to sprinkle HTML on boths sides of the purchase summary. Then you're better off passing that purchase summary - as a string - to the billing information verification code. You could put together some sort of "object that outputs purchase summaries when this method is called" type of system - and VBScript allows for this type of system - but let's keep things simple and pretend we just want to pass in a string and we need efficient string concatenation.

Enter StrCat.Catter. "Catter" is a C++ COM component with a very small interface. Here's typical usage of it:

<%
  Dim strcat
  Set strcat = Server.CreateObject("StrCat.Catter")

  Dim rs
  Set rs = ExecuteSql("SELECT Username FROM Users")

  do until rs.EOF
    strcat rs(0) & "<br>" & vbCrLf
    rs.MoveNext
  loop

  Dim some_str
  some_str = strcat.Dump
  Set strcat = nothing

  Response.Write some_str
%>

That's pretty simple, isn't it? By having the concatenation method be the default method, you just say the Catter's name - in this case strcat - and it just tacks on the string you give it. When you're ready to use the whole string, call Dump and you've got it!

In Part 2 we'll look at the implementation of our Catter class and performance tests.

  • Read Part 2


    Windows Internet Technology | ASP.NET [1.x] [2.0] | ASPMessageboard.com | ASPFAQs.com | Advertise | Feedback | Author an Article