Details
-
Improvement
-
Resolution: Fixed
-
Critical
-
2.1.2
-
Security Level: Public
-
None
-
CBG Sprint 13
-
5
Description
When the skipped sequence queue grows very large, the cost associated with removal from that queue becomes a performance bottleneck. SkippedSequenceQueue.Remove does a sort.Search in the slice to find the value, then does a slice shift/copy to remove the element. For large skipped sequence queues, the memory move associated with that shift becomes a performance bottleneck.
The current slice-based queue should be replaced with a list+map - the map for direct access to elements by sequence, and the list for memory efficient removal from an ordered list.