Atlanta Custom Software Development 

 
   Search        Code/Page
 

User Login
Email

Password

 

Forgot the Password?
Services
» Web Development
» Maintenance
» Data Integration/BI
» Information Management
Programming
  Database
Automation
OS/Networking
Graphics
Links
Tools
» 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

Rating


 


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
Next
' 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 VB.net/ASP.net, SQL Server and other MS technologies. He is MCSD.net, 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.