I will need to recover my old-branch to give you some pointers about it…
I - A lot of the codecs are creating plenty of intermediate objects…
Pseudo-Example on the messageCodec: List… decodedProperties…
Message message = new Message(list.get(0), list.get(1)… );
it could be something done directly at wire layer without requiring the
intermediate object. that’s putting some pressure at the GC.
There’s also a case now where having SASL is increasing the time response
(having SASL is requiring having an intermediate buffer I believe)…
And there are other cases that could go beyond simply the codec.. but I have
more abstract concerns at this point.. where we could probably talk over the
phone.. or have a dedicated session over IRC.
I have this transient branch containing some of the micro-benchmarks and some
proposed changes I had a while ago. It’s probably not in a working state… but
it would give you an idea where I was aiming for.