From fc49d6943a2927a6ddba468d68ff04811571c3b3 Mon Sep 17 00:00:00 2001 From: Vapre Date: Tue, 5 Jan 2021 00:08:04 +0100 Subject: [PATCH] OrderIO performance improvement OrderIO, ToOrderList, skip if frame is empty, which occurs often each client each frame. --- OpenRA.Game/Network/OrderIO.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/OpenRA.Game/Network/OrderIO.cs b/OpenRA.Game/Network/OrderIO.cs index ce69dc76e9..4d4f7e82b4 100644 --- a/OpenRA.Game/Network/OrderIO.cs +++ b/OpenRA.Game/Network/OrderIO.cs @@ -16,8 +16,14 @@ namespace OpenRA.Network { public static class OrderIO { + static readonly List EmptyOrderList = new List(0); + public static List ToOrderList(this byte[] bytes, World world) { + // PERF: Skip empty order frames, often per client each frame + if (bytes.Length == 4) + return EmptyOrderList; + var ms = new MemoryStream(bytes, 4, bytes.Length - 4); var reader = new BinaryReader(ms); var ret = new List();