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

Sample Chapters
Commonly Asked Message Board Questions
JavaScript Tutorials
MSDN Communities Hub
Official Docs
Stump the SQL Guru!
XML Info
Author an Article
Technology Jobs
ASP ASP.NET ASP FAQs Message Board Feedback ASP Jobs
Print this page.
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

  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

  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

  • Software Developer / Programmer - Distributed Systems (NYC)
    Next Step Systems
    US-NY-New York

    Justtechjobs.com Post A Job | Post A Resume

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