我发现了一些2008年基准测试结果,用于测试几个顶级.NET DI / IoC容器here的性能。但我一直无法找到任何更新的结果。是否有任何基准测试可以比较一些大的IoC容器(StructureMap,Unity,Ninject,Autofac,Castle Windsor等)?
答案 0 :(得分:43)
我不建议使用性能基准来挑选IoC容器。有许多更重要的因素,如功能集,开发路线图和可维护性等。
意识到你所引用的基准是,在最坏的情况下,只显示超过100万次通话的速度差异3-4倍。在“真实世界”场景中,DI / IoC用于连接依赖项,并且对整体应用程序性能的影响非常小,因为此构建阶段占整个运行时的一小部分。选择“高性能”与“低性能”IoC容器可能对应用程序的感知性能没有明显的影响。
在性能对您的特定使用情况真正重要的不太可能的情况下,基准测试不太可能是IoC容器性能如何影响您的有效衡量标准,因为基准测试倾向于倾向于特定的问题集。如果您真的认为这是一个严重的问题,我强烈建议您进行自己的分析和测量。
答案 1 :(得分:6)
就我而言,IoC容器的速度是一个重要因素。我有一个执行多次注射的应用程序,发现Ninject正在大幅减慢应用程序。取出IoC完全解决了性能问题。我将研究其他解决方案。
答案 2 :(得分:6)
IoC Container Benchmark - Performance comparison包含20多种产品的性能和功能比较表,并且是最新的(最新更新21.12.2017)
文章的结论:
特别是Simple Injector似乎是一个不错的选择。它非常快, 有一个很好的文档,也支持高级方案,如 拦截和通用装饰。
另请参阅相关的https://stackoverflow.com/questions/1140730/net-di-containers-comparison/问题。