Consider using DList in `TraversedSnapshots`
Clarification and motivation
In #44 (closed), we likely were forced to choose quite a low limit because the stepping logic turns out to take quadratic time.
Namely, in TraversedSnapshots
I used a list, assuming that we will never skip more than ~10 snapshots with a single step, and the reality is now different. If we run Continue
command that makes 10k steps, we will likely spend quadratic time evaluating the list of traversed snapshots.
So we should consider using DList
in TraversedSnapshots
. But from getters (tsAllVisited
, tsBefire
and others) we still need list as return type, so there is something to think about here.
Acceptance criteria
- Quadratic asymptotics is avoided.
- Getters of
TraversedSnapshots
still return lists, if possible. - The default stepping limit is reconsidered. Let's make it as large as possible, but still make sure that worst-case execution time is not more than a few seconds.