This document says std::list is inefficient:
std::list
std::list is an extremely inefficient class that is rarely useful. It performs a heap allocation
Use two std::lists: One "free-list" that's preallocated with a large stash of nodes at startup, and the other "active" list into which you splice nodes from the free-list. This is constant time and doesn't require allocating a node.
splice