Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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
Java 调整/加速弹簧AOP_Java_Spring_Performance_Aop_Spring Aop - Fatal编程技术网

Java 调整/加速弹簧AOP

Java 调整/加速弹簧AOP,java,spring,performance,aop,spring-aop,Java,Spring,Performance,Aop,Spring Aop,我正在用一点SpringAOP扩展一个应用程序。它所做的是从数据库中检索数据并将其映射到对象。这大约需要7-8秒才能输入10000个条目。然而,当只添加一个方面的AOP时,它会突然花费大约50秒。应用程序的性能是非常关键的,到目前为止,我还没有想到如何使它更快。我猜代理的创建正在减慢它的速度 进一步资料 每个条目的对象都用scope@scope(scopeName=ConfigurableBeanFactory.scope\u PROTOTYPE)注释,并从应用程序上下文E object=app

我正在用一点SpringAOP扩展一个应用程序。它所做的是从数据库中检索数据并将其映射到对象。这大约需要7-8秒才能输入10000个条目。然而,当只添加一个方面的AOP时,它会突然花费大约50秒。应用程序的性能是非常关键的,到目前为止,我还没有想到如何使它更快。我猜代理的创建正在减慢它的速度

进一步资料

每个条目的对象都用scope
@scope(scopeName=ConfigurableBeanFactory.scope\u PROTOTYPE)
注释,并从应用程序上下文
E object=appCtx.getBean(clazz.getName(),clazz)检索在填充之前。填充是通过反射和递归方法完成的


aspect只是为某些特定类及其子类的所有setter注册
执行(public void.+.set*(..)
,AOP是通过
@enableSpectProxy

使用AspectJ而不是Spring AOP来启用的。现在我有了AOP功能,性能没有任何显著损失

对于每个setter,您现在突然执行额外的逻辑,而且从上下文中获取bean比
newclass()
更重。因此,最终所有额外的毫秒将相加。不是一个,而是10000个条目的总和。我知道,所有这些传统的东西都会让它变慢,但会增加6-7倍?我的意思是,在创建对象的过程中,甚至没有执行额外的方面逻辑。我通过反射直接在场上填充对象。从/通过应用程序上下文加载/创建对象也没那么糟糕。如果只删除
@Aspect
,仍然需要7-8秒。有没有关于如何调整它的想法?没有,因为你做不了多少。你得到一个代理,代理意味着开销。无论反射的事实如何,如果有方法调用,则需要检查点切割(如果需要应用ti)。如果您想要更高的速度,请使用加载或编译时编织而不是代理。我同意@M.Deinum的观点,编译时或加载时编织可能会改善很多。如果Spring AOP导致您的性能问题,AspectJ应该提供更好的结果,因为它发生在编译时/加载时,而SpringAOP通过设置代理在对象创建时完成它的工作。如果问题是由你在这方面的工作引起的,我不会期望有太大的变化。