Java - 网络上的对象流效率

WAT*_*TWF 5 java networking java-io

快速设计问题:我需要在我的游戏引擎架构中实现客户端-服务器网络之间的一种通信形式,以便在彼此之间发送事件。

我选择创建事件对象,因此,我想知道序列化这些对象并通过简单套接字网络通过对象流传递它们的效率如何?

也就是说,与创建对象的字符串表示、通过字符流发送字符串以及解析字符串客户端相比,效率如何?

事件将在每个游戏循环中发送,如果不是更多的话;但事件对象本身只是一些 Java 原语的简单包装器。

感谢您的洞察力!

(tl;dr - 网络上的对象流是否有效?)

tsk*_*zzy 5

如果性能是主要问题,我建议在您自己的自定义序列化和 Java 的本机序列化上使用Protocol Buffers。

Jon Skeet 在这里给出了很好的解释和基准测试:高性能序列化:Java 与 Google 协议缓冲区与 ...?

如果您不能使用 PB,我怀疑 Java 的本机序列化将比从String. 这种差异是否显着可能取决于您序列化的对象的复杂程度。与往常一样,您应该进行基准测试以确认您的预测。

您通过网络发送东西的事实应该无关紧要。