IoC/DI 这个概念,最初是由 Martin Fowler 提出来的。之后,很快在 Java 社区大行其道。在 .net 社区,IoC 的流行要比 Java 晚一些。尽管如此,现在开源社区中也已经出现了很多使用 .net 编写的 IoC 框架,比较有代表性的有:Castle Windsor/Spring.net/Autofac/StructureMap/NInject/Unity...

为了解决一个相同的问题,相继出现这么多相似的框架(大家不厌其烦地重复造轮子),不能不说 IoC 的热度实在不凡。但这也给我们在选用 IoC 框架时带来一些困难。这么多可选项,到底选用哪个比较好呢。

有一个德国人 Daniel Palme 写了一篇文章 IoC Container Benchmark - Performance comparison,试图从性能和功能两方面对他所知的一些现有 IoC 框架做出评判,为此还专门在 github 上建了一个项目

作者看了他的代码,觉得很可以借鉴,遂把他的代码拷贝过来,剔除了一些不能运行的项目(因为作者机器配置比较低,只能安装 .net4.0,而测试中有些项目要求 .net4.5 才能运行),再把自己的 My.Ioc 框架加入测试中,也做了一个性能比较,跟 My.Ioc 源码一起上传到 codeplex 中,感兴趣的同学可以自己到这里下载。

下面这张表格是作者在自己机器上测试的结果,仅供各位参考:

Container Container Request Combined Complex Generics IEnumerable Conditional Interception
Ninject 1760 2927 6372 17470 7100 13655 0 0
Unity 511 569 1385 3876 0 6684 0 0
AutoFac 418 875 1579 3723 1583 4123 0 0
MugenInjection 420 394 550 1088 1281 1152 0 0
MyIoc 198 204 224 292 222 410 0 0
SimpleInjector 189 189 195 196 191 223 0 0
No 183 182 185 189 0 0 0 0

至于 My.Ioc 的功能,如果您还想要进一步了解的话,请看这篇文章

My.Ioc 的性能的更多相关文章

  1. 【读书笔记】Ninject 在MVC5中的使用

    从MVC3中就开始接触Ninject这个IOC工具.也一直是MVC Framework系列书籍中推荐的IOC工具,当然还有优秀的Autofac等.性能和使用上面个有千秋.下面先看一下Ninject的使 ...

  2. 在MVC5中的使用Ninject

    在MVC5中的使用 Ninject 从MVC3中就开始接触Ninject这个IOC工具.也一直是MVC Framework系列书籍中推荐的IOC工具,当然还有优秀的Autofac等.性能和使用上面个有 ...

  3. IocPerformance 常见IOC 功能、性能比较

    IocPerformance IocPerformance 基本功能.高级功能.启动预热三方面比较各IOC,可以用作选型参考. Lamar: StructureMap的替代品 Lamar 文档 兼容S ...

  4. .NET Core2.1下采用EFCore比较原生IOC、AspectCore、AutoFac之间的性能

    一.前言 ASP.NET Core本身已经集成了一个轻量级的IOC容器,开发者只需要定义好接口后,在Startup.cs的ConfigureServices方法里使用对应生命周期的绑定方法即可,常见方 ...

  5. IOC性能对比

  6. ASP.NET Core中的依赖注入(1):控制反转(IoC)

    ASP.NET Core在启动以及后续针对每个请求的处理过程中的各个环节都需要相应的组件提供相应的服务,为了方便对这些组件进行定制,ASP.NET通过定义接口的方式对它们进行了"标准化&qu ...

  7. IL实现简单的IOC容器

    既然了解了IL的接口和动态类之间的知识,何不使用进来项目实验一下呢?而第一反应就是想到了平时经常说的IOC容器,在园子里搜索了一下也有这类型的文章http://www.cnblogs.com/kkll ...

  8. Spring的IOC和AOP之深剖

    今天,既然讲到了Spring 的IOC和AOP,我们就必须要知道 Spring主要是两件事: 1.开发Bean:2.配置Bean.对于Spring框架来说,它要做的,就是根据配置文件来创建bean实例 ...

  9. IoC组件~Autofac将多实现一次注入,根据别名Resove实例

    回到目录 对于IoC容器来说,性能最好的莫过于Autofac了,而对于灵活度来说,它也是值得称赞的,为了考虑系统的性能,我们经常是在系统初始化于将所有依赖注册到容器里,当需要于根据别名把实现拿出来,然 ...

随机推荐

  1. 完美世界-2015校园招聘-java服务器工程师-成都站

    给定一个整数,将该整数分解成多个2的幂次方相加的形式,每次都取最大的可以分解出来的2的幂次方 比如 65 64 1 1 1 2 2 package wanmanshijie; import java. ...

  2. 架设wordpress再vps上的 一些感想总结

    日本vps.樱花系列 配置: 2cpu+1G内存+100G硬盘 系统 第一次我把默认的centos 给换了..原因就是,不会linux.而且我主要用.net  感觉 mono也行.但是linux不会. ...

  3. RocksDB介绍:一个比LevelDB更彪悍的引擎

    关于LevelDB的资料网上还是比较丰富的,如果你尚未听说过LevelDB,那请稍微预习一下,因为RocksDB实际上是在LevelDB之上做的改进.本文主要侧重在架构上对RocksDB对LevelD ...

  4. Windows Server 2012 R2里十个极好的新功能

    Windows Server 2012 R2具备的众多新特点大大的增强了操作系统的功能性,同时也是在Windows Server 2012原有功能上的拓展.这里整理出Windows Server 20 ...

  5. hdu-3376-Matrix Again(最小费用最大流)

    题意: 给一个矩形,从左上角走到右下角,并返回左上角(一个单元格只能走一次,左上角和右下角两个点除外) 并且从左上到右下只能往右和下两个方向.从右下返回左上只能走上和左两个方向! 分析: 拆点,最小费 ...

  6. weblogic启动报错之未修改hosts产生错误

    报错如下: Enter username to boot WebLogic server:weblogic Enter password to boot WebLogic server: <Ju ...

  7. HDU 5410 CRB and His Birthday

    题目大意: 一个人要去买礼物,有M元.有N种礼物,每件礼物的价值是Wi, 你第i件礼物买k个 是可以得到 Ai * k + Bi 个糖果的. 问怎么才能使得你得到的糖果数目最多.   其实就是完全背包 ...

  8. Shader Forge 武器流光

    使用Shader Forge 简直就是一种享受,相信会比BluePrint更好

  9. Java---网络编程(1)

    网络编程 相关基础概念 1.计算机网络与Internet 2.TCP/IP协议 3.Internet地址 - - -IP地址,形如xxx.xxx.xxx.xxx - - -域名系统.例如www.edu ...

  10. HDOJ(HDU) 2139 Calculate the formula(水题,又一个用JavaAC不了的题目)

    Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) 看到这个时间,我懵逼了... 果然,J ...