[
https://issues.apache.org/jira/browse/CAMEL-5396?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13401686#comment-13401686
]
Mark Hillary commented on CAMEL-5396:
-------------------------------------
Here are the numbers from my tests;
DefaultJmsKeyFormatStrategy: 5.3748ms
Precompiled Regex: 1.93471ms
String Utils: 0.83326ms
Each test exercises the different method of string escaping 1000 times. With
these numbers being the average of running the tests 10 times.
> Improve performance of DefaultJmsKeyFormatStrategy
> --------------------------------------------------
>
> Key: CAMEL-5396
> URL: https://issues.apache.org/jira/browse/CAMEL-5396
> Project: Camel
> Issue Type: Improvement
> Components: camel-jms
> Affects Versions: 2.9.2
> Reporter: Mark Hillary
> Labels: patch, performance
> Attachments: CAMEL-5396.patch, default-jms-key-strat.diff
>
>
> The current default implementation uses String.replace/replaceAll to escape
> the illegal characters in the header key. This is unfortunate because
> replace/replaceAll are implemented in terms of regular expressions which
> makes the escaping quite costly for something that is executed for every
> single message. Also it's quite likely that the headers will be identical for
> every single message that's published via JMS.
> The attached patch makes two changes;
> * Use Commons Lang StringUtil.replaceEach which using a StringBuilder
> internally to do the replacement. This adds a dependency on Commons Lang.
> * Cache the output of StringUtil.replaceEach in a ConcurrentHashMap. This
> could be moved to a separate class if caching every key is a concern. Or this
> could be changed to use an LRUCache
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira