c#互联网协议实例化数据包的速度最快?

c#互联网协议实例化数据包的速度最快?,c#,protocols,packet,packets,C#,Protocols,Packet,Packets,我有一个C#game服务器,它为它从数据团队收到的每个数据包创建一个新对象,然后填充数据包。在最近对其进行基准测试之后,我注意到 var packettype = Opcodes[opcode]; var packet = (Packet)Activator.CreateInstance(packettype.Type); 分析后,正在消耗整个应用程序的大部分资源 将所有内容更改为struct并创建空数据包主体的缓存表似乎可行,但可能需要进行大量的重新设计 任何人都知道一个真正减少CPU使

我有一个C#game服务器,它为它从数据团队收到的每个数据包创建一个新对象,然后填充数据包。在最近对其进行基准测试之后,我注意到

 var packettype = Opcodes[opcode];
 var packet = (Packet)Activator.CreateInstance(packettype.Type);
分析后,正在消耗整个应用程序的大部分资源

将所有内容更改为struct并创建空数据包主体的缓存表似乎可行,但可能需要进行大量的重新设计

任何人都知道一个真正减少CPU使用的好方法,我想在操作码表中保留一个实例化的对象,然后以某种方式复制它,而不是为每个数据包实例化一个新对象

很多数据包都是轻量级的,但有些数据包非常大,有多个字段和列表


注意:每个数据包在填充之前都是100%完全相同的。

在重新写入之前,我会尝试按数据包类型进行配置,以限制需要优化的内容。您是否尝试过直接创建数据包而不是使用
CreateInstance
?例如,使用switch语句显式检查要创建的数据包类型,然后执行
新SpecificPacket()
?此外,我不确定探查器在这种情况下是否会显示它,但是
数据包
?MiMo的各种派生类的构造函数是否有任何缓慢之处。这是可能的,但是CreateInstance真的那么需要资源吗?我假设大数据包的构造速度很慢,我想这对基准测试是很好的。在这里找到了答案。