C# 温莎城堡3.2解决性能问题
我们有一个大型web应用程序,多年来一直在使用Windsor Castle。该应用程序在370项服务中注册了约700个组件。它们几乎都属于一个根,即入口点控制器。当web请求到来时,我们解析该入口控制器并让它处理该请求。问题是解析根组件大约需要35毫秒。我会说这对我来说听起来很难 我的问题是上面的数字听起来是否正常?有谁能给我一个提示,告诉我我可以做些什么来缩短解析时间?或者检查我是否做错了什么C# 温莎城堡3.2解决性能问题,c#,.net,dependency-injection,castle-windsor,windsor-3.0,C#,.net,Dependency Injection,Castle Windsor,Windsor 3.0,我们有一个大型web应用程序,多年来一直在使用Windsor Castle。该应用程序在370项服务中注册了约700个组件。它们几乎都属于一个根,即入口点控制器。当web请求到来时,我们解析该入口控制器并让它处理该请求。问题是解析根组件大约需要35毫秒。我会说这对我来说听起来很难 我的问题是上面的数字听起来是否正常?有谁能给我一个提示,告诉我我可以做些什么来缩短解析时间?或者检查我是否做错了什么 谢谢:)解析对象图所需的时间取决于许多因素,例如: 对象图形的大小 组件的注册生活方式以及这些生活
谢谢:)解析对象图所需的时间取决于许多因素,例如:
- 对象图形的大小
- 组件的注册生活方式以及这些生活方式在图形中的位置(显然,如果根对象是单例对象,解析速度非常快)
- 您在构造函数中所做的工作量
Container | ms.
----------------+-----
Simple Injector | 0.01
StructureMap | 0.50
Autofac | 0.77
Unity | 1.04
Castle Windsor | 3.96
Ninject | 5.03
从这个基准来看,我想说35毫秒对于用Castle Windsor解析这样大小的对象图有点慢。因此,请确保您只需检查null并存储传入的依赖项即可。这样你就可以了
顺便说一句,您可以找到更广泛的基准。解析对象图所需的时间取决于许多因素,例如:
- 对象图形的大小
- 组件的注册生活方式以及这些生活方式在图形中的位置(显然,如果根对象是单例对象,解析速度非常快)
- 您在构造函数中所做的工作量
Container | ms.
----------------+-----
Simple Injector | 0.01
StructureMap | 0.50
Autofac | 0.77
Unity | 1.04
Castle Windsor | 3.96
Ninject | 5.03
从这个基准来看,我想说35毫秒对于用Castle Windsor解析这样大小的对象图有点慢。因此,请确保您只需检查null并存储传入的依赖项即可。这样你就可以了
顺便说一句,您可以找到更广泛的基准。解析对象图所需的时间取决于许多因素,例如:
- 对象图形的大小
- 组件的注册生活方式以及这些生活方式在图形中的位置(显然,如果根对象是单例对象,解析速度非常快)
- 您在构造函数中所做的工作量
Container | ms.
----------------+-----
Simple Injector | 0.01
StructureMap | 0.50
Autofac | 0.77
Unity | 1.04
Castle Windsor | 3.96
Ninject | 5.03
从这个基准来看,我想说35毫秒对于用Castle Windsor解析这样大小的对象图有点慢。因此,请确保您只需检查null并存储传入的依赖项即可。这样你就可以了
顺便说一句,您可以找到更广泛的基准。解析对象图所需的时间取决于许多因素,例如:
- 对象图形的大小
- 组件的注册生活方式以及这些生活方式在图形中的位置(显然,如果根对象是单例对象,解析速度非常快)
- 您在构造函数中所做的工作量
Container | ms.
----------------+-----
Simple Injector | 0.01
StructureMap | 0.50
Autofac | 0.77
Unity | 1.04
Castle Windsor | 3.96
Ninject | 5.03
从这个基准来看,我想说35毫秒对于用Castle Windsor解析这样大小的对象图有点慢。因此,请确保您只需检查null并存储传入的依赖项即可。这样你就可以了
顺便说一句,你可以找到一个更广泛的基准。你是如何衡量这一点的?在发布模式下编译并在调试器外部运行时,您是否对其进行了基准测试?是的,我使用秒表测量解析并将运行时间写入日志所需的时间。在发布模式下,当然在调试器之外。您是如何测量的?在发布模式下编译并在调试器外部运行时,您是否对其进行了基准测试?是的,我使用秒表测量解析并将运行时间写入日志所需的时间。在发布模式下,当然在调试器之外。您是如何测量的?在发布模式下编译并在调试器外部运行时,您是否对其进行了基准测试?是的,我使用秒表测量解析并将运行时间写入日志所需的时间。在发布模式下,当然在调试器之外。您是如何测量的?在发布模式下编译并在调试器外部运行时,您是否对其进行了基准测试?是的,我使用秒表测量解析并将运行时间写入日志所需的时间。在发布模式下,在调试之外