You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We tried to upgrade Spring framework from 2.5.5 to 3.1.1, during performance test we found that TransactionInterceptor will add some performance overhead because introduce of following method:
org.springframework.transaction.interceptor.TransactionAspectSupport.methodIdentification(java.lang.reflect.Method,java.lang.Class)
This new method will call Class.getDeclaredMethods() instead of using the method passed in directly.
If there are multiple transaction pointcuts defined and invoked in one call, the performance will be affected badly.
Can we do fallback support as 2.5.5 or add cache support for the method instead of call Class.getDeclaredMethods() each time?
I've fixed this through direct use of targetClass.getName() + "." + method.getName(), always exposing the signature against the concrete target class. This is as efficient as the original code was in 2.5.5, with largely the same result as after the #11975 change. And where it differs (e.g. in case of methods inherited from base classes), the result should actually be more meaningful than before (since the concrete class is what we dispatch to).
Ray opened SPR-9802 and commented
We tried to upgrade Spring framework from 2.5.5 to 3.1.1, during performance test we found that TransactionInterceptor will add some performance overhead because introduce of following method:
org.springframework.transaction.interceptor.TransactionAspectSupport.methodIdentification(java.lang.reflect.Method,java.lang.Class)
This new method will call Class.getDeclaredMethods() instead of using the method passed in directly.
If there are multiple transaction pointcuts defined and invoked in one call, the performance will be affected badly.
Can we do fallback support as 2.5.5 or add cache support for the method instead of call Class.getDeclaredMethods() each time?
Affects: 3.1.1
Issue Links:
Referenced from: commits 89b3651, 2c8b7fe, 49294c9, bbfc807
2 votes, 5 watchers
The text was updated successfully, but these errors were encountered: