Not all objects are created equals
I found something extremely surprising while profiling a project. Take a look at this piece of code:
Stopwatch stop = Stopwatch.StartNew(); for (int i = 0; i < 1000000; i++) { new WeakReference(null); } stop.Stop(); Console.WriteLine("WeakRef: " + stop.ElapsedMilliseconds); stop = Stopwatch.StartNew(); for (int i = 0; i < 1000000; i++) { new string('a', 5); } stop.Stop(); Console.WriteLine("'aaaaa': " + stop.ElapsedMilliseconds);
On my machine, this has the following output:
WeakRef: 980
'aaaaa': 35
Creating a WeakReference is much more costly than creating a normal object. Not surprising, when you think of it, WeakReference has deep ties to the CLR, but I couldn't really believe it when I saw it the first time.

Comments
Comment preview