Merge pull request #112 from RosettaCommons/aleaverfay/lrec_any_neighbors_for_residue
Merging master and branch aleaverfay/lrec_any_neighbors_for_residue
Several changes to the code in response to performance degradations
following the pointer-rewrite merge.
1) the LREnergyContainer now has an extra virtual method "any_neighbors_for_residue"
which allows it to avoid creating iterators for residues with no neighbors; thus the
disulfide energy doesn't spend nearly as much time allocating and deallocating
iterators for non-disulfide bonded residues (most of them).
2) Inlining more accessors in Residue and Conformation.
3) Avoiding reference-count increments by replacing accessors that returned MyClassOP
and MyClassCOPs with MyClass & and MyClass const &s.
4) Adding raw-pointer variants of the performance-critical AtomTree functions which
otherwise resulted in some rather surprising and dramatic code slowdowns and an
explanation why raw pointers are used in these functions instead of smart pointers
since raw pointers are heavily frowned upon.
Also, the minimization performance benchmarks are not doing what they seem to be advertising;
they're mostly running the deriv check code. They're not really making sure that dfpmin didn't
get slower. It also looks like one of the interaction graph benchmarks is failing.