Modified system_clock to provide static vtime_t values for positive infinity and zero, rather than member functions. Modified SequentialSimualtionManager to rotate and update object timestamp execution list rather than pop and insert. As long as objects remain registered we assume that they can encounter more events after processing concurrent events of current timestamp. Therefore, removing (erasing) the list node is essentially wasteful in the sense that we will likely be re-creating a new node for the object once a new event for that object exists. Instead if we rotate the node to the end of the queue and update its timestamp to be positive infinity, the list order is maintained and there is no need to re-create the list node
List as base container for event queue is a bad choice. The list container has very poor data locality, and results in high percentage of data cache misses. Created specializations of EventManager to use vector (not working) and multiset. Multiset appears to perform significantly better than list approach
Changed simulation manager to have the object id of -1 rather than 0. Means that all registering objects should have an id less than its id
Modified sequential simulation manager to maintain objects in a vector rather than an unordered map indexed by the system_id. Initial thought was that it would provide better data locality for the object pointers.