Hi, I missed out on the context leading up to the discussion about queue_transactions and the use of raw vs. smart pointers, but I'm curious whether the use of std::list in the ObjectStore interface has come up as well. That's another source of allocations that could be avoided. A naive approach could just replace the list with vector, which could at least reduce the number of allocations to one if you reserve() space for all of your elements up front. An interface based on iterators could also help, by allowing the caller to put an array on the stack and pass that in. Iterators are tricky because the generic form requires templates, and template functions can't be virtual. But if we require the elements to be sequential in memory (i.e. raw array, std::array<Transaction*> or std::vector<Transaction*>), the interface could take (Transaction** begin, Transaction** end) without requiring templates. This interface can also be made compatible with unique_ptrs. Casey -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html