Hi Dan,
thanks for the feedback.
On 05/02/15 23:01, Daniel Kulp wrote:
1) Can you save/print a list of everything that is a “get” from the non-message
contexts? I’m mostly concerned about Bus/BindingOperation/Endpoint objects.
A long long time ago (2.0/2.1 timeframe), those objects were stored as
contextual properties and the only way to retrieve them was via the
“getContextualProperty” things. Since we use those all over the place, I
added direct accessors to the Exchange, but for compatibility still stored them
as properties. However, I don’t remember if I went and found all the places
that used to look those up via the “get” methods and replaced them. We
probably could remove those from being stored as contextual properties and
document that. (should have been done long ago) Would reduce the number of
properties to deal with.
I've added few simple System.out in the get method of "array" version
and run the jbossws testsuite. No get of Bus/BindingOperation/Endpoint
objects afaics; so I've tried grepping getContextualProperty in the
whole cxf sources and the only thing I could find is
org/apache/cxf/rs/security/saml/sso/AbstractRequestAssertionConsumerHandler
getting the Bus from the context.
I'm sending you the zip with the logs.
2) In the “array” version, you could loop through once and just do an ==
compare and then only do the .equals if that ends up null. I’m willing to bet
most of the strings we use as keys are interned.
Tried that, but it's not improving performances. To be honest, though,
my bench app is likely not stressing the 'get' that much, as it doesn't
use WS-Security, etc.
Anyway, my gut feeling is that's also because the cache misses are by
far much more then the cache hits (for instance, on client side in the
jbossws testsuite I see ~5700 props found in the message context, ~350
props found in non-message contexts and ~72000 props not found.
Cheers
Alessio
--
Alessio Soldano
Web Service Lead, JBoss