18 November 2005

Testing for empty String

I was speaking with James a few days ago about strings and testing for them being empty, and as usual we had an interesting discussion. At the end of it I thought I better go off and write some test code to find out some real numbers. I investigated three environments. .NET 1.1 .NET 2.0 and MFC7.1.
I took a rather simplistic model to profile, in order to make the tests more repeatable and easy to follow.

The .NET code followed the followed the structure:


Yes that’s right the loop is 1 billion.
The results were as follows rounded to the nearest second. (Nb. An empty loop took around 0.5 second). The C++ code was very similar bar using things like CString etc….

Test .NET 1.1 .NET 2.0
stringVal.Length == 0 7 4
stringVal == “” 11 11
stringVal == String.Empty 11 17
string.IsNullOrEmpty(stringVal) 13.5* 9
 
Test Native C++/MFC & CString
stringVal.IsEmpty() 17
string.GetLength==0 13
stringVal[0] == ” 25
 
Test Native C++/MFC & TCHAR
strVal[0] == ” 2

(Nb. (*) For the .NET 1.1 IsNullOrEmpty test, I wrote a small class to simulate this function)
The machine that carried out the tests was an Intel 3.4Ghz P4 running XP SP2 with 1GB RAM.

This showed me a few things NET performs exceedingly well in comparison to native code
Writing easy to read and maintainable code is better than trying to write optimum performing code
I would use IsNullOrEmpty(stringVal) because it is the most readable and explicit.

For additional information check out www.gotdotnet.com.

Keep up to date with Simple-Talk

For more articles like this delivered fortnightly, sign up to the Simple-Talk newsletter

This post has been viewed 1064 times – thanks for reading.

  • Rate
    [Total: 0    Average: 0/5]
  • Share

David Connell

View all articles by David Connell