[
https://issues.apache.org/jira/browse/SLING-4112?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Stefan Seifert updated SLING-4112:
----------------------------------
Attachment: 141028_adaptto_jprofiler_slingmodels_getannotation.gif
141028_adaptto_jprofiler_slingmodels.gif
> Sling Models: Optimize performance when read sling models annotations
> ---------------------------------------------------------------------
>
> Key: SLING-4112
> URL: https://issues.apache.org/jira/browse/SLING-4112
> Project: Sling
> Issue Type: Improvement
> Components: Extensions
> Affects Versions: Sling Models Implementation 1.1.0
> Reporter: Stefan Seifert
> Priority: Minor
> Labels: models
> Fix For: Sling Models Impl 1.2.0
>
> Attachments: 141028_adaptto_jprofiler_slingmodels.gif,
> 141028_adaptto_jprofiler_slingmodels_getannotation.gif
>
>
> i did some first performance tests with a sling application that makes
> intensive usage of sling models to see where potential hotspots are that cost
> performance, esp. in area of sling models.
> attached is a filtered view of a jprofile session showing only the method
> calls inside sling models implementation:
> [^141028_adaptto_jprofiler_slingmodels.gif]
> a good part of performance is spent on inspection the annotations of the
> sling models classes, a call graph of the first method:
> [^141028_adaptto_jprofiler_slingmodels_getannotation.gif]
> i think this is especially the case because this inspection takes place on
> each adaptTo() call, although the underlying model class never changes when
> the OSGi bundle stays in place.
> it should be possible to come up with an optimization caching the inspection
> results (which annotations exist on which fields/methods/types with which
> parameters), and doing only the injection part on each adaptTo() invocation.
> if the bundle changes the cache has to be cleared.
> i will think about it the next days and perhaps come up with an
> implementation proposal.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)