2011-03-15 89 views
13

我发现了一些2008年的基准测试结果,用于测试几个顶级.NET DI/IoC容器here的性能。但我一直无法找到任何更新的结果。有比较一些大的IoC容器(StructureMap,Unity,Ninject,Autofac,Castle Windsor等)的基准吗?DI/IoC容器性能基准比较?

+0

我同意里德。此外,基准很容易出错。在此线程查找实例:http://stackoverflow.com/questions/5298240/hiro-vs-other-ioc-containers/5308894#5308894。 – Steven 2011-03-15 20:33:03

+1

事实上,这样的新基准从网络中遗漏,我认为这是一个较小的担心。 – 2011-03-15 20:44:12

回答

44

我不会推荐使用性能基准测试来挑选IoC容器。还有很多很多更重要的因素,例如功能设置,开发路线图和可维护性等。

意识到您引用的基准在最坏的情况下仅显示3-4倍的速度差100万个电话。在“现实世界”场景中,DI/IoC用于连接依赖关系,并且对整体应用程序性能的影响非常小,因为此构建阶段占整个运行时间的一小部分。选择“高性能”还是“低性能”IoC容器可能对应用程序的感知性能没有明显的影响。

在性能对您的特定使用情况非常重要的情况下,基准不太可能成为衡量IoC容器性能如何影响您的有效衡量标准,因为基准往往会偏向特定的问题集。如果您真的相信这是一个严重的问题,我强烈建议您自己进行分析和测量。

+6

只是想说,选择高性能与低性能IoC容器可以对应用程序的感知性能产生巨大的明显影响,因为用户最小的可识别更改为50ms,并且最佳与最差容器之间的性能差异通常是超过50毫秒。出于这个原因,我们亲自从Ninject移到了DryIoC 2.1.3。 – 2016-02-23 16:02:37

+0

3-4倍的差异不是更新的基准测试结果。例如,根据http://www.palmmedia.de/blog/2011/8/30/ioc-container-benchmark-performance-comparison – daniloquio 2018-03-07 19:04:03

6

在我的情况下,IoC容器的速度一直是一个重要因素。我有一个执行许多注射的应用程序,发现Ninject大大减慢了应用程序的速度。完全取出IoC解决了性能问题。我将研究其他解决方案。

+0

,Ninject vs LightInject的差异可能会超过200倍。如果将IoC容器解决性能问题,你可能想尝试[Simple Injector](https://simpleinjector.codeplex.com/)。 Simple Injector与手工创建对象图相比的性能开销是最小的(有时甚至更好),这可以在[this benchmark]中看到(http://www.palmmedia.de/blog/2011/8/30/ IOC-容器基准-性能比较)。 – Steven 2013-09-03 10:47:37

+0

调查DryIoC 2.1.3 – 2016-02-23 16:03:12