00:00:00.0040000
00:00:01.7080000
00:00:00.1640000
As you can easily see resolving a type with Unity is something like at least 40 times slower. Is it worth it? I believe yes because you'll catch up with the performance on good design.
using System;
using System.Linq;
using Microsoft.Practices.Unity;
static class Program
{
static IUnityContainer container = new UnityContainer();
static void Main(string[] args)
{
//create instance without unity
var lc1 = DateTime.Now;
for (int i = 0; i < 100; i++)
{
new Log();
}
var lc2 = DateTime.Now;
Console.WriteLine(lc2 - lc1);
//create instance with unity using delegates
var la1 = DateTime.Now;
for (int i = 0; i < 100; i++)
{
container.RegisterInstance>(i.ToString(),
() => container.Resolve());
}
for (int i = 0; i < 100; i++)
{
Func fLog = container.Resolve>(i.ToString());
ILog log = fLog();
}
var la2 = DateTime.Now;
Console.WriteLine(la2 - la1);
//create instance with unity
var lb1 = DateTime.Now;
for (int i = 0; i < 100; i++)
{
container.RegisterType(i.ToString());
}
for (int i = 0; i < 100; i++)
{
ILog log = container.Resolve(i.ToString());
}
var lb2 = DateTime.Now;
Console.WriteLine(lb2 - lb1);
Console.ReadLine();
}
}
public interface ILog { }
public class Log : ILog { }
