Code optimization is an important aspect of writing an efficient C#
application. The following tips will help you increase the speed and efficiency
of your C# code and applications.
Source From : http://www.vcskicks.com/optimize_csharp_code.php
1. Knowing when to use StringBuilder
You must have heard before that a StringBuilder object is much
faster at appending strings together than normal string types.
The thing is StringBuilder is faster
mostly with big strings. This means if you have a loop that
will add to a single string for many iterations then a StringBuilder class is definitely much faster than a string type.
However if you just want to append something to a string a
single time then a StringBuilder class is overkill. A
simple string type variable in this case improves on
resources use and readability of the C# source code.
Simply choosing correctly between StringBuilder objects and string types you can optimize
your code.
2. Comparing Non-Case-Sensitive Strings
In an application sometimes it is necessary to compare two
string variables, ignoring the cases. The tempting and traditionally approach is
to convert both strings to all lower case or all upper case and then compare
them, like such:
str1.ToLower() == str2.ToLower()
However repetitively calling the function ToLower() is a bottleneck in performace. By instead using
the built-in string.Compare() function you can
increase the speed of your applications.
To check if two strings are equal ignoring case would look like
this:
string.Compare(str1, str2, true) == 0 //Ignoring cases
The C# string.Compare function
returns an integer that is equal to 0 when the two strings are equal.
3. Use string.Empty
This is not so much a performance improvement as it is a
readability improvement, but it still counts as code optimization. Try to
replace lines like:
if (str == "")
with:
if (str == string.Empty)
This is simply better programming practice and has no negative
impact on performance.
Note, there is a popular practice that checking a string's
length to be 0 is faster than comparing it to an empty string. While that might
have been true once it is no longer a significant performance improvement.
Instead stick with string.Empty.
4. Replace ArrayList with List<>
ArrayList are useful when storing
multiple types of objects within the same list. However if you are keeping the
same type of variables in one ArrayList, you can gain
a performance boost by using List<> objects
instead.
Take the following ArrayList:
ArrayList intList = new ArrayList();
intList.add(10);
return (int)intList[0] + 20;
Notice it only contains intergers. Using the List<> class is a lot better. To convert it to a
typed List, only the variable types need to be
changed:
List<int> intList = new List<int>();
intList.add(10)
return intList[0] + 20;
There is no need to cast types with List<>. The performance increase can be especially
significant with primitive data types like integers.
5. Use && and || operators
When building if statements, simply make sure to use the
double-and notation (&&) and/or the double-or
notation (||), (in Visual Basic they are AndAlso and OrElse).
If statements that use & and | must check every part of the
statement and then apply the "and" or "or". On the other hand, && and || go thourgh the
statements one at a time and stop as soon as the condition has either been met
or not met.
Executing less code is always a performace benefit but it also
can avoid run-time errors, consider the following C# code:
if (object1 != null && object1.runMethod())
If object1 is null, with the && operator, object1.runMethod()will not execute. If the && operator is replaced with &, object1.runMethod() will run even if object1 is
already known to be null, causing an exception.
6. Smart Try-Catch
Try-Catch statements are meant to
catch exceptions that are beyond the programmers control, such as connecting to
the web or a device for example. Using a try
statement to keep code "simple" instead of using if
statements to avoid error-prone calls makes code incredibly slower.
Restructure your source code to require less try
statements.
7. Replace Divisions
C# is relatively slow when it comes to division operations. One
alternative is to replace divisions with a multiplication-shift operation to
further optimize C#. The article explains in detail how to make the
conversion.
Conclusion
As you can see these are very simple C# code optimizations and yet they can have a powerful impact on the performance of your application. To test out the optimizations, try out the free Optimizing Utility.Profiling
An important concept when it comes to increasing the speed and efficiency of you C# code, is code profiling. A good profiler can not only let you know about the speed bottlenecks in your applications, but it can also help you with memory management. The best .Net profiler is probably RedGates ANTS Profiler. They have a free trial at their homepage you can download before purchasing the full product.Source From : http://www.vcskicks.com/optimize_csharp_code.php
0 comments:
Post a Comment