Library tutorials & articles
String Concatenation Component
By Michael Balloni, published on 08 Oct 2001
Page 1 of 5
- Introduction
- The solution
- The results
- Conclusion
- Test Code
Introduction
I wrote this component - StrCat.Catter - because string concatenation
in Visual Basic (Script) has poor performance characteristics. I found that code
like this:
<%
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.
Related articles
Related discussion
-
Binary Studio | software development outsourcing Ukraine
by shane124 (4 replies)
-
Making the conversion from Visual Basic to .NET
by JimiJ (1 replies)
-
VS2005 app's won't run on another machine
by ted4444 (0 replies)
-
VB.NET: Hide and show table using radio buttons
by converter2009 (1 replies)
-
Read eMails from Outlook express using ASP
by kumaravelu (1 replies)
Related podcasts
-
Scott Guthrie
Scott catches up with Scott Guthrie in an interview covering Ajax, Asp 2.0, extender controls, CSS adapters and more.
A great idea! You can also reduce concatenation times by using arrays and the built-in Join() function. No components required. Similar performance gain. Very readable syntax (once you understand the Join arguments).
StringVar = JOIN( StringArray(), ElementSeparatorText )
Redim S(4)
S(0) = "This is text line 1"
S(1) = "This is text line 2"
S(2) = "This is text line 3"
S(3) = "This is text line 4"
S(4) = "This is text line 5"
'assign lines to string variable with comma separator
vMyString = join(S, ",")
'dump lines to screen, one element per visual line ("&" executes once)
response.write join(S, "<br>" & VbCrLf)
'output array as a table row (elements are separated with "</td><td>")
response.write "<tr><td>" & join(S, "</td><td>" ) & "</td></tr>"
'build an option list of codes that exist in a database
set rs = CreateObject("ADOR.Recordset")
rs.Open "select [TypeCode] from [CodeTable] order by [TypeCode]", myConnectString, adOpenStatic
S = rs.getrows '<-- very fast!
rs.close
response.write = "<select ...>" & vbcrlf
response.write = "<option>" & join(S, "</option>" & vbcrlf & "<option>" ) & "</option>" & vbcrlf
response.write = "</select>" & vbcrlf
'clear array from memory (if you want to free up memory right away)
erase S
This thread is for discussions of String Concatenation Component.