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.