Major Performance Problem in ApplicationContext Creation and Prototype Bean Lookup by Type [SPR-9296] #13934
Labels
in: core
Issues in core modules (aop, beans, core, context, expression)
status: duplicate
A duplicate of another issue
Robert Binna opened SPR-9296 and commented
In version 3.1.1 of the springframework, the creation of the application context and the lookup of beans by type, in particular the lookup of prototype beans is extremely slow (factor 10).
The same creation and lookup process in spring 3.0.6 was significantly faster.
The definition of the application context is done through java based bean configuration.
Therefore we created a sample programm which can be used to reproduce the problem (program together with a gradle build file is attached,
gradle run
executes the test).This application uses javasssist to create 100 bean classes. Each bean class has 5 autowired bean properties. The bean properties are generated, such that no cyclic dependencies occur. Finally a configuration class containing the generated beans is constructed and loaded. All beans are created as singletons except one bean which has been created as prototype scope.
After the application context is loaded a single bean is looked up from the application context 100 times. In the first case this is done with a bean of scope singleton. In the second case this is done with a bean of scope prototype.
The same tests was issued on spring 3.1.1 and spring 3.0.6
The results are as follows:
==== Spring 3.1.1 ====
SingletonBean:
StopWatch 'SpringPerformanceTest': running time (millis) = 17004; [settingUpApplicationContext] took 15177 = 89%; [retrievingBeans] took 1827 = 11%
PrototypeBean:
StopWatch 'SpringPerformanceTest': running time (millis) = 24400; [settingUpApplicationContext] took 13126 = 54%; [retrievingBeans] took 11274 = 46%
==== Spring 3.0.6 ====
SingletonBean:
StopWatch 'SpringPerformanceTest': running time (millis) = 3110; [settingUpApplicationContext] took 2654 = 85%; [retrievingBeans] took 456 = 15%
PrototypeBean:
StopWatch 'SpringPerformanceTest': running time (millis) = 3163; [settingUpApplicationContext] took 1790 = 57%; [retrievingBeans] took 1373 = 43%
Affects: 3.1.1
Attachments:
Issue Links:
1 votes, 3 watchers
The text was updated successfully, but these errors were encountered: