private void SaveIncomingMessages(List <ReliableMessage> messages) { lock (_incomingMessageQueue) { var now = Timestamp.GetCurrent(); Span <SeqNo> input = stackalloc SeqNo[messages.Count]; Span <SortItem> outputItems = stackalloc SortItem[messages.Count]; for (var i = 0; i < messages.Count; i++) { input[i] = messages[i].Seq; } var x = input.ToString(); _incomingMessageSeq.Sort(input, outputItems); foreach (var item in outputItems) { var message = messages[item.Index]; if (AcceptIncomingMessage(message)) { OnIncomingMessage(message, now); } } } }
public int StackAllocSort() { var result = 0; Span <SeqNo> input = stackalloc SeqNo[_messages.Count]; Span <SortItem> outputItems = stackalloc SortItem[_messages.Count]; for (var i = 0; i < _messages.Count; i++) { input[i] = _messages[i].Seq; } _pivot.Sort(input, outputItems); foreach (var item in outputItems) { var message = _messages[item.Index]; result++; } return(result); }