I ran some performance analysis of the inband code, and found the pmt
message passing as highly inefficient.
As a first step, I changed the pmt_list[1-6] implementations from using
imbalanced tree with refcounted pairs against a much more simple
based one, resulting in a huge speedup.
Unfortunately, this means going from ~770 instructions per sample  to
instructions per sample, which is still just to much.
The high cost is due to the following reasons:
On each received sample block, the data is passed between the mblocks.
this, messages are created, every fields refcount gets incremented, on
message reception the fields refcounts are adjusted again, and when the
receiving block finishes, the fields refcounts and the messages refcount
decreased, leading to release of the fields and the message (as the
block is normally the only block holding a reference to the message).
Much of this work is just not necessary - I think the messages should be
more statically typed, using refcounted objects only for large objects
pass the sample data as refcounted object, the package length as a POD).
Any opions on this topic?
Stefan Brüns / Bergstraße 21 / 52062 Aachen
mailto:lurch at gmx.li http://www.kawo1.rwth-aachen.de/~lurchi/
phone: +49 241 53809034 mobile: +49 151 50412019