Presize MemoryStream when possible.
Also use GetBuffer when we know we have presized the stream to the exact required size to prevent a needless copy.
This commit is contained in:
@@ -77,10 +77,10 @@ namespace OpenRA.Network
|
||||
|
||||
public virtual void SendSync(int frame, byte[] syncData)
|
||||
{
|
||||
var ms = new MemoryStream();
|
||||
var ms = new MemoryStream(4 + syncData.Length);
|
||||
ms.Write(BitConverter.GetBytes(frame));
|
||||
ms.Write(syncData);
|
||||
Send(ms.ToArray());
|
||||
Send(ms.GetBuffer());
|
||||
}
|
||||
|
||||
protected virtual void Send(byte[] packet)
|
||||
@@ -197,10 +197,10 @@ namespace OpenRA.Network
|
||||
|
||||
public override void SendSync(int frame, byte[] syncData)
|
||||
{
|
||||
var ms = new MemoryStream();
|
||||
var ms = new MemoryStream(4 + syncData.Length);
|
||||
ms.Write(BitConverter.GetBytes(frame));
|
||||
ms.Write(syncData);
|
||||
queuedSyncPackets.Add(ms.ToArray());
|
||||
queuedSyncPackets.Add(ms.GetBuffer());
|
||||
}
|
||||
|
||||
protected override void Send(byte[] packet)
|
||||
|
||||
@@ -240,7 +240,7 @@ namespace OpenRA
|
||||
{
|
||||
if (IsImmediate)
|
||||
{
|
||||
var ret = new MemoryStream();
|
||||
var ret = new MemoryStream(1 + OrderString.Length + 1 + TargetString.Length + 1);
|
||||
var w = new BinaryWriter(ret);
|
||||
w.Write((byte)0xfe);
|
||||
w.Write(OrderString);
|
||||
|
||||
@@ -38,14 +38,14 @@ namespace OpenRA.Network
|
||||
|
||||
public static byte[] SerializeSync(int sync)
|
||||
{
|
||||
var ms = new MemoryStream();
|
||||
var ms = new MemoryStream(1 + 4);
|
||||
using (var writer = new BinaryWriter(ms))
|
||||
{
|
||||
writer.Write((byte)0x65);
|
||||
writer.Write(sync);
|
||||
}
|
||||
|
||||
return ms.ToArray();
|
||||
return ms.GetBuffer();
|
||||
}
|
||||
|
||||
public static int2 ReadInt2(this BinaryReader r)
|
||||
|
||||
@@ -127,10 +127,10 @@ namespace OpenRA.Network
|
||||
|
||||
public void SendSync(int frame, byte[] syncData)
|
||||
{
|
||||
var ms = new MemoryStream();
|
||||
var ms = new MemoryStream(4 + syncData.Length);
|
||||
ms.Write(BitConverter.GetBytes(frame));
|
||||
ms.Write(syncData);
|
||||
sync.Add(ms.ToArray());
|
||||
sync.Add(ms.GetBuffer());
|
||||
|
||||
// Store the current frame so Receive() can return the next chunk of orders.
|
||||
ordersFrame = frame + LobbyInfo.GlobalSettings.OrderLatency;
|
||||
|
||||
Reference in New Issue
Block a user