Products

Solutions

Resources

Partners

Community

Blog

About

QA

Ideas Test

New Community Website

Ordinarily, you'd be at the right spot, but we've recently launched a brand new community website... For the community, by the community.

Yay... Take Me to the Community!

Welcome to the DNN Community Forums, your preferred source of online community support for all things related to DNN.
In order to participate you must be a registered DNNizen

HomeHomeOur CommunityOur CommunityGeneral Discuss...General Discuss...DNN Core Development Policy SuggestionDNN Core Development Policy Suggestion
Previous
 
Next
New Post
12/29/2007 10:05 PM
 

Cathal, I completely agree.  There are many blogs and sample applications to prove this.  However, in the instances where StringBuilder is not efficient, String.Concat is FAR more efficient over the standard concatenation method ("&" or "+").  Even if you do not notice the difference from a single concatenation, the difference over an entire application can be tremendous. 

It was pointed out to me in Gemini that the compiler will simply switch the concatenation characters to the String.Concat method.  However, doing it beforehand saves the compiler from having to do that.  In essence, you save the processor, the compiler, and the end-user time for every single instance of concatenation that is not using the standard concatenation characters.

In my original example, I mentioned my most recent application enhancement (in regards to this topic).  I was dealing with a travel web service where the web service would accept and respond to web requests for rentals, reservations, location information, etc.  The web service had begun to crawl upon going live due to the load it was handling.  Under heaviest load, some requests would take up to 60 seconds to receive a response. 

Once I made the changes to the way the string concatenation was done throughout the entire web service, the responses were coming back at a consistent 1-5 seconds (5 being under heavy load).  Granted, there were a couple of strings that were cached, and for common string values, I made them Constants, but the point still remains.

Unless I miss something, or am not able to accurately test the affects of a specific string concatenation, I never use standard string concatenation anymore.  It simply has proven itself horribly inefficient.

Now, as for the DNN project or any other like it, small enhancements like this can go a very long way.  Every application can benefit from better string concatenation (unless it's already done).

I am very happy to have been able to contribute my proposed ehnancements to Gemini, and I hope that they stand on their own during testing.  Thank you very much for your continued contributions and efforts.  I appreciate all that you do every day.


Will Strohl

Upendo Ventures Upendo Ventures
DNN experts since 2003
Official provider of the Hotcakes Commerce Cloud and SLA support
 
New Post
12/29/2007 10:17 PM
 

Sorry about the repeat post, but I just wanted to clarify something...  I am not advocating a switch to StringBuilder.  I am advocating the switch from standard concatenation to the more efficient alternative.  If that means to use a StringBuilder, then great,  But most often, that means to use a String.Concat call.

Also, string comparison is the other big compiler enemy.  For instance string1 is equal or not equal to sting2.  It is usually far more efficient to do this instead (or use the Compare method):

If String.Equals(string1, string2) Then
If Not String.Equals(string1, string2) Then

Will Strohl

Upendo Ventures Upendo Ventures
DNN experts since 2003
Official provider of the Hotcakes Commerce Cloud and SLA support
 
New Post
12/30/2007 1:44 PM
 

Open reflector, go to System.String and examine the Equility operator:

Public Shared Operator =(ByVal a As String, ByVal b As String) As Boolean
    Return String.Equals(a, b)
End Function
So why should we stop using the "=" Operator
 
New Post
12/30/2007 1:55 PM
 

I see benefits of using

String.Equals(a,b,StringComparison.InvariantCultureIgnoreCase)

instead of

a.ToUpper() = b.ToUpper()

What we really need is a bit more defense programming in select case statements, eg:

instead
Select case Token.ToLower()
...
we should always use 
Select case Token.ToLowerInvariant()

This would avoid a lot of trouble, for example all the trouble related to the turkish "I"

 
New Post
1/2/2008 12:11 AM
 

Stefan, I like your suggestion.  It is also useful to note that the "ToUpper" and similar functions create a new instance of the same string (only in lowercase).


Will Strohl

Upendo Ventures Upendo Ventures
DNN experts since 2003
Official provider of the Hotcakes Commerce Cloud and SLA support
 
Previous
 
Next
HomeHomeOur CommunityOur CommunityGeneral Discuss...General Discuss...DNN Core Development Policy SuggestionDNN Core Development Policy Suggestion


These Forums are dedicated to discussion of DNN Platform and Evoq Solutions.

For the benefit of the community and to protect the integrity of the ecosystem, please observe the following posting guidelines:

  1. No Advertising. This includes promotion of commercial and non-commercial products or services which are not directly related to DNN.
  2. No vendor trolling / poaching. If someone posts about a vendor issue, allow the vendor or other customers to respond. Any post that looks like trolling / poaching will be removed.
  3. Discussion or promotion of DNN Platform product releases under a different brand name are strictly prohibited.
  4. No Flaming or Trolling.
  5. No Profanity, Racism, or Prejudice.
  6. Site Moderators have the final word on approving / removing a thread or post or comment.
  7. English language posting only, please.
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out