[ 
https://issues.apache.org/jira/browse/CAMEL-4009?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Arkadi Shishlov reopened CAMEL-4009:
------------------------------------


The TRUNK version won't speed up.
You're clearing the cache but is supposed to be kept across different calls to 
find(). Thats why the jarCache was implemented with class member and SoftRef to 
release memory after resolver is not used anymore.

> Fast @Converter loading in uber-jar
> -----------------------------------
>
>                 Key: CAMEL-4009
>                 URL: https://issues.apache.org/jira/browse/CAMEL-4009
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-core
>    Affects Versions: 2.7.0
>            Reporter: Arkadi Shishlov
>            Assignee: Claus Ibsen
>            Priority: Minor
>              Labels: uber-jar
>             Fix For: 2.8.0
>
>         Attachments: 
> apache-camel-r1127037-fast-TypeConverter-loading-in-uber-jar.diff, 
> apache-camel-r1128875-fast-TypeConverter-loading-in-uber-jar-try2.diff
>
>
> Currently, the @Converter converters are loaded as follows
> {noformat}
> for package in TypeConverter meta-inf resource
>   get package url from classloader
>   if url is jar
>     for entries in jar
>       if entry match package
>         check annotation
> {noformat}
> This is very inefficient approach when application is packaged into uber-jar 
> as expensive iteration is performed multiple times over same jar.
> The attached patch changes loop into:
> {noformat}
> for package in TypeConverter meta-inf resource
>   get package url from classloader
>   create map url -> package names
>   for url in distinct url
>     if jar
>       for entries in jar
>         for package in packages
>           if entry match package
>             check annotation
> {noformat}
> With this patch I was able to cut startup time significantly from 15sec spent 
> on @Converter-s load to 2sec on 45MB 29k entries uber-jar.
> I understand that the solution is not pretty but resolves a very practical 
> problem. Let me know if you want me to polish it and update the javadoc.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to