Finally comitted some performance work I've been doing to avoid excessive heap use, I touched about 100 files so for the rest of the week feel free to blame any trunk problems on me :)
There is an oddly intermittent client-side leak in the client_test, there are no other failures I know of. I confess my guilt and shame, I commited broken code. I will fix it ASAP, but I just couldn't stand the weight of the changes in my working copy any longer. Results are about 50% fewer calls to malloc and 30% broker speedup in my tests. Haven't done any concurrency tests yet but I'm optimistic sure that's improved also. So the lesson is: before you type "new" THINK. - Does this need to be on the heap? - Is this on the critical path? Heap allocation for convenience during setup/teardown of brokers, connections or channels is not such a worry. However we absolutely should not introduce *any* further heap allocation on the critical path - i.e. code that is executed for every single frame, segment or message processed. I'm fairly sure we eventually will get to 0 heap use on the critical path. There's a long way to go but don't take us any further away :) Cheers, Alan.
