首页 > 代码库 > My.Ioc 的性能

My.Ioc 的性能

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 中,感兴趣的同学可以自己到这里下载。

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

ContainerContainerRequestCombinedComplexGenericsIEnumerableConditionalInterception
Ninject1760292763721747071001365500
Unity511569138538760668400
AutoFac418875157937231583412300
MugenInjection42039455010881281115200
MyIoc19820422429222241000
SimpleInjector18918919519619122300
No1831821851890000

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

My.Ioc 的性能