On Wed, 2014-09-03 at 21:08 -0400, Michael Goulish wrote:
- Original Message -
On Wed, 2014-09-03 at 04:18 -0400, Michael Goulish wrote:
Fabulous.
OK, I put them in my git repo:
https://github.com/mick-goulish/proton_c_clients.git
And there, they are full-res.
sigh.
pn_data_node and pn_data_add look interesting. Might be worth inlining
pn_data_node if the compiler isn't doing that already (did you build
with -O3?) Also shaving a few instructions off pn_data_add might pay
off.
I just went into ccmake and told it to do a Release build.
Is there any way I can turn it up to 11 ?
Release is 11, all optimizations are on including inlining. Although
astitcher sometimes claims that MinSizeRel can be faster because less
memory used means fewer cache thingies.
pn_data_add is interesting because it is taking so much CPU but doing so
little work - just a couple integer add/subtract ops. So
a) clearly it's getting called a LOT, maybe that could be reduced.
b) shaving off a little bit of work (e.g. call overhead, hence inlining
thought) is a sizable percentage of what it does, which is a sizable
percentage of the overall CPU use.
Another thought: could we make pni_nid_t a direct pointer rather than an
index and eliminate pn_data_node() entirely? That would mean doing the
indexing at the point you assign to node-parent, node-next etc. but
that might be a lot less frequent than looking it up.
Cheers,
Alan.