cyclus/cyclus — pull request #983 by rwcarlsen (2014-08-13 19:10:25+00:00)
Title: Performance optimizations

* optional link to google's tcmalloc allocator
* change all `Arc` usage to be `const Arc*`
* create a cached Arc pool for reusing Arc objects between resource exchanges.

For large simulations (hundreds of reactors), uses ~20% less memory, and runs about 15% faster. If tcmalloc is available for linking, runs about ~40% faster (instead of 15% faster).

I'm not suggesting we actually accept any/all of these changes - just submitting the PR as food for thought and discussion. Some of the changes do break API - although they are arguably API's that nobody has used outside the kernel (and perhaps nobody will ever use outside the kernel).