Atlanta Custom Software Development 

   Search        Code/Page

User Login



Forgot the Password?
» Web Development
» Maintenance
» Data Integration/BI
» Information Management
» Regular Expr Tester
» Free Tools

Faster string appending with Mid$ command
[ All Languages » VB »  String]

Total Hit ( 2586)

Rate this article:     Poor     Excellent 

 Submit Your Question/Comment about this article



As you probably know, the "&" operator is rather slow, especially with long strings. When you have to repeatedly append chucks of characters to the same variable, you can speed up your code using a simple trick based on the Mid$ command. The idea is that you pre-allocate a buffer long enough to accomodate for the result of your operation. Here's an example of this technique.

Suppose you want to create a string given by appending the first 10000 integers, e.g. "1 2 3 4 5 6 7 ... 9999 10000". This is the easiest way to do so:

Click here to copy the following block
res = ""
For i = 1 to 10000: res = res & Str(i): Next

The problem with the standard approach is that the res variable is reallocated 10000 times. This is a better way to reach the same result:

Click here to copy the following block
Dim res As String
Dim i As Long
Dim index As Long

' prepare a buffer long enough
res = Space(90000)
' this points to where we want to insert the string
index = 1

' here we go
For i = 1 to 10000
  substr = Str(i)
  length = Len(substr)
  ' stuff the string inside the result variable
  Mid$(res, index, length) = substr
  ' advance index
  index = index + length
' drop extra chars
res = Left$(res, index - 1)

The standard code takes 2.2 seconds on my 333 MHz system computer, while the smart way takes only 0.08 seconds, so it's 25+ times faster.

Submitted By : Nayan Patel  (Member Since : 5/26/2004 12:23:06 PM)

Job Description : He is the moderator of this site and currently working as an independent consultant. He works with, SQL Server and other MS technologies. He is, MCDBA and MCSE. In his free time he likes to watch funny movies and doing oil painting.
View all (893) submissions by this author  (Birth Date : 7/14/1981 )

Home   |  Comment   |  Contact Us   |  Privacy Policy   |  Terms & Conditions   |  BlogsZappySys

© 2008 BinaryWorld LLC. All rights reserved.