You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Primary difference is that .ConcurrentMerge() allows limiting how many operations are concurrently in flight.
Secondary difference is methodology:
.Merge() does a full pass of all enumerators and triggers a .MoveNextAsync(). Then waits for all of them to complete, returning elements as they complete. This means that all enumerators are moved forward in lockstep. Faster processes will have to wait for slower ones.
.ConcurrentMerge() triggers .MoveNextAsync() until it reaches a non-completed task. Then it immediately checks for any that are completed; clear out whichever are completed; and keep going. This means quicker enumerators can generate values quickly while slower ones can process in background.
.Merge() is more "fair" to force fast ones to wait for slow ones, while .ConcurrentMerge() returns values asap regardless of where they come from.
See morelinq/MoreLINQ#793
The text was updated successfully, but these errors were encountered: