Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DI/IoC容器性能基准比较?_C#_Structuremap_Ioc Container_Ninject_Autofac - Fatal编程技术网

C# DI/IoC容器性能基准比较?

C# DI/IoC容器性能基准比较?,c#,structuremap,ioc-container,ninject,autofac,C#,Structuremap,Ioc Container,Ninject,Autofac,我发现了一些2008年的基准测试结果,用于测试几个顶级.NETDI/IoC容器的性能。但是我还没有找到任何更新的结果。是否有任何基准比较一些大型IoC容器(StructureMap、Unity、Ninject、Autofac、Castle Windsor等)?我不建议使用性能基准选择IoC容器。还有很多很多更重要的因素,比如特性集、开发路线图和可维护性等等 请意识到,在最坏的情况下,您引用的基准测试仅显示100万次呼叫的速度相差3-4倍。在“真实世界”场景中,DI/IoC用于连接依赖项,对整个应

我发现了一些2008年的基准测试结果,用于测试几个顶级.NETDI/IoC容器的性能。但是我还没有找到任何更新的结果。是否有任何基准比较一些大型IoC容器(StructureMap、Unity、Ninject、Autofac、Castle Windsor等)?

我不建议使用性能基准选择IoC容器。还有很多很多更重要的因素,比如特性集、开发路线图和可维护性等等

请意识到,在最坏的情况下,您引用的基准测试仅显示100万次呼叫的速度相差3-4倍。在“真实世界”场景中,DI/IoC用于连接依赖项,对整个应用程序性能的影响非常小,因为此构建阶段在整个运行时中所占的比例非常小。选择“高性能”与“低性能”IoC容器可能不会对应用程序的感知性能产生明显影响


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

在我的案例中,IoC容器的速度是一个重要因素。我有一个执行多次注入的应用程序,发现Ninject大大降低了应用程序的速度。国际奥委会的退出彻底解决了性能问题。我将研究其他解决方案。

有20多种产品的性能和功能对比表,并且是最新的(最新更新日期:2017年12月21日)

文章的结论是:

尤其是看起来是个不错的选择。非常快, 有很好的文档,还支持高级场景,如 拦截和泛型装饰器


另见相关问题。

我同意里德的观点。此外,基准很容易出错。例如,看看这个线程:。事实上,网络上缺少这样的新基准测试,我认为这不太重要。如果取出IoC容器解决了性能问题,您可能想试试。与手动更新对象图相比,简单注入器的性能开销最小(有时甚至更好),如中所示。查看DryIoC 2.1.3只是想说,选择高性能与低性能的IoC容器会对应用程序的感知性能产生巨大的明显影响,因为用户可识别的最小变化是50ms,而最佳和最差容器之间的性能差异通常超过50ms。我们个人从Ninject迁移到DryIoC 2.1.3正是出于这个原因。更新的基准并没有显示3-4倍的差异。例如,Ninject与LightInject的差异可以超过200倍,根据