I had thought about this too; I don't have any numbers (of course :-)) but the think that won me over was the massive simplification of the code overall that this brought in. The tracking of if we have the next number we need is a lot easier than the object indexed by sequence # version I had previously. It's really easy to know what the next message to dispatch is, it's the first one in the array.

If there's a perf crunch here, it would be easy to swap out the sort algorithm with something that's a lot faster when working on already sorted arrays; just didn't seem necessary yet.

In general, I don't see the out-of-order issue being more that the number of outstanding receive requests.