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.



Reply via email to