Double linked list works really slow.
Splay tree is data structure that can implement the same operations but using O(log n) time amoritated instead of O(n / const) for linked list with skip list.
At my workflows I achived a significant perfomance improve(up to -98% collection time for single workflow and 40-50% in average).