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.
