In my experience, string concatenation is often the biggest offender when application performance slows. While DNN is indeed pretty quick, and appears to be quite scalable, I would like to suggest something to the Core Team, and all Project Team members.
There are test results all over the Internet showing that concatenating strings is best done either using StringBuilder, or String.Concat versus the popular method of simply using a "&" or "+". Case in point, I took a web service that was responding to requests from a response time of 60-90 seconds to 2-5 seconds just by switching the string concatenation throughout the web service (and on some occasions, caching the strings).
I am sure that the Core Team already has some sort of guideline in place for contributing developers. I would like to suggest that the Core Team have its contributors to use the StringBuilder and String.Concat methods whenever a string is to be concatenated.
This may seem like a trivial thing to some of you out there, but consider the memory and processor consumption for a string object like this:
Dim strFirstName As String = "John"
Dim strLastName As String = "Dough"
Dim strName As String = String.Empty
strName = strFirstName & " " & strLastName ' COMMON METHOD
strName = String.Concat(strFirstName, " ", strLastName) ' FASTER METHOD
While if this is called every once in a while, there will not be a noticeable difference to a single user. However, if this string concatenation method is called many times per page, per module, and per provider for every page request, this adds up to significant resource consumption. Not only in terms of processor time, and memory usage, but also consider the additional energy required by the servers that are serving up these pages. For a busy web site or web server, there could be a significant reduction in compilation, rendering, and response time if better string concatenation practices were encouraged.
(Remember, better "string concatenation practices" does not mean to use StringBuilder for every concatenation scenario, only when it offsets the speed and efficiency problems when scaling for performance overall on an application. My main point is to never use the "&" or "+" methods.)
I just hope that this post at least strikes up some dialog to get the ball rolling on this. I look forward to any comments and conversation on this topic.
Here are some easy to find resources related to this topic: