using System.Diagnostics;
public interface IMyService
public class MyService : IMyService
public static class AutofacBenchmark
public static void Run(int N)
var builder = new ContainerBuilder();
builder.RegisterType<MyService>().As<IMyService>();
var container = builder.Build();
var sw = Stopwatch.StartNew();
for (int i = 0; i < N; i++)
var service = container.Resolve<IMyService>();
if(service.GetData() != "Hello World!") throw new Exception();
Console.WriteLine($"Autofac: {sw.ElapsedMilliseconds} ms");
public static class UnityBenchmark
public static void Run(int N)
var container = new UnityContainer();
container.RegisterType<IMyService, MyService>();
var sw = Stopwatch.StartNew();
for (int i = 0; i < N; i++)
var service = container.Resolve<IMyService>();
if(service.GetData() != "Hello World!") throw new Exception();
Console.WriteLine($"Unity: {sw.ElapsedMilliseconds} ms");
public static class NinjectBenchmark
public static void Run(int N)
var kernel = new StandardKernel();
kernel.Bind<IMyService>().To<MyService>();
var sw = Stopwatch.StartNew();
for (int i = 0; i < N; i++)
var service = kernel.Get<IMyService>();
if(service.GetData() != "Hello World!") throw new Exception();
Console.WriteLine($"Ninject: {sw.ElapsedMilliseconds} ms");