常用Ioc容器性能测试对比

本文主要进行Ioc容器性能对比测试。

先把代码贴上,代码很容易看明白,由于Munq编译时提示没有引用,明明添加了的,还没找到原因(已经解决)。

准备基础代码:

 interface IDal
    {
        void save();
    }
    interface ILog
    { 
        
    }
    class OracleDal : IDal
    {

        public void save()
        {
            //Console.WriteLine("SqlServer save.");
        }
    }

  

测试计时:

class Program
    {
        const long iterations = 10000;
        
        private static List<Test> ts = new List<Test> {   
            
            new AutofacTest() ,
            new WindsorTest() ,
            new StructureMapTest(),
            new UnityTest(),
            new NinjectTest(),
             new MunqTest() 
        };

        static void Main(string[] args)
        {
            Console.WriteLine("Running {0} iterations", iterations);
            Console.WriteLine("{0,16}: {1,12} - {2,12} ", "Test Name", "Ticks", "mSec");
            Console.WriteLine("-------------------------------------------------------");

            ts.ForEach(c => Measure(c));

            Console.Read();
        }
        private static void Measure(Test t)
        {
            GC.Collect();
          
            var stopwatch = new Stopwatch();
            stopwatch.Start();

            for (int i = 0; i < iterations; i++)
            {
                t.Run();
            }

            stopwatch.Stop();

            var ticks = stopwatch.ElapsedTicks;
            Console.WriteLine("{0,16}: {1,12:N0} - {2,12:N2} ", t.GetType().Name, ticks, ticks * 1000 / Stopwatch.Frequency);
        }
    }

  

MunqTest:

using Munq;

namespace IocTestDemo
{
    class MunqTest : Test
    {
        static IocContainer container;
        static MunqTest()
        {
           container = new IocContainer();

           container.Register<IDal, OracleDal>();

        }
        public override void Run()
        {
            container.Resolve<IDal>().save();
        }
    }
}

  

StructMapTest:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using StructureMap;

namespace IocTestDemo
{
    class StructureMapTest:Test
    {
        static IContainer container;
        static StructureMapTest()
        {
            container = new  Container();

            container.Configure(x => x.Register<IDal>(new OracleDal()));

        }
        public override void Run()
        {
            container.GetInstance<IDal>().save();
        }
    }
}

  

结果

循环10,000次:

循环100,000次:

以上测试根据最新的组件进行测试,仅供参考。


转载于:https://www.cnblogs.com/dotview/archive/2011/08/12/2136759.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值