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

Sections:
Sample Chapters
Commonly Asked Message Board Questions
JavaScript Tutorials
MSDN Communities Hub
Official Docs
Security
Stump the SQL Guru!
XML Info
Information:
Feedback
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
    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

  • 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