fix: Replaces throttlers and packet callbacks with function pointers (#1063)

Replaces multi-cast delegates with function pointers to gain 25% in performance and lower allocations.
This commit is contained in:
Stefano Merotta 2022-06-15 21:48:43 +02:00 • committed by GitHub
parent b779d7737f
commit f24b98f8e2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
31 changed files with 189 additions and 172 deletions

View file

@ -745,7 +745,7 @@ public partial class NetState : IComparable<NetState>
* length is the total buffer length. We might be able to use packetReader.Capacity() instead.
* packetLength is the length of the packet that this function actually found.
*/
private ParserState HandlePacket(CircularBufferReader packetReader, byte packetId, out int packetLength)
private unsafe ParserState HandlePacket(CircularBufferReader packetReader, byte packetId, out int packetLength)
{
PacketHandler handler = IncomingPackets.GetHandler(packetId);
int length = packetReader.Length;
@ -793,7 +793,7 @@ public partial class NetState : IComparable<NetState>
}
}
ThrottlePacketCallback throttler = handler.ThrottleCallback;
var throttler = handler.ThrottleCallback;
if (throttler != null)
{
if (!throttler(packetId, this, out bool drop))