Skip to content

Major Performance Problem in ApplicationContext Creation and Prototype Bean Lookup by Type [SPR-9296] #13934

Closed
@spring-projects-issues

Description

@spring-projects-issues

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    in: coreIssues in core modules (aop, beans, core, context, expression)status: duplicateA duplicate of another issue

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions