Java 对多个操作使用单ByteArrayOut/InputStream和ObjectOut/Input

Java 对多个操作使用单ByteArrayOut/InputStream和ObjectOut/Input,java,serialization,Java,Serialization,我已经用Java编写了一个基本的服务器-客户机体系结构,并且正在使用可序列化类进行数据包传输。我可能在stackoverflow的一些问题中见过“tobytearray,frombytearray”函数。服务器工作并且必须实时工作,因此每秒发送的数据包几乎超过20-30个。当我读一个数据包或写一个数据包时,我序列化了这个类,这个操作的成本可能会很高,因为我不断地用它创建一个新的ObjectOutputStream和一个ByteArrayOutputStream,当你认为它在一秒钟内发生30次时,

我已经用Java编写了一个基本的服务器-客户机体系结构,并且正在使用可序列化类进行数据包传输。我可能在stackoverflow的一些问题中见过“tobytearray,frombytearray”函数。服务器工作并且必须实时工作,因此每秒发送的数据包几乎超过20-30个。当我读一个数据包或写一个数据包时,我序列化了这个类,这个操作的成本可能会很高,因为我不断地用它创建一个新的ObjectOutputStream和一个ByteArrayOutputStream,当你认为它在一秒钟内发生30次时,可能会影响性能。因此,我考虑在主类中创建一个静态ByteArrayOutputStream和ObjectOutputStream,这样每个数据包在序列化或反序列化它们自己时都会使用它们,这些数据包已经创建好了,所以我可以避免在一秒钟内分配30次的代价。但它会不会造成另一次性能冲击?我应该每次刷新或重置ByteArrayStream吗

当你认为它在一秒钟内发生30次时,很可能会影响性能

真的吗?你知道,计算机相当快。除非这些是真正巨大的字节数组,否则我非常怀疑这是一个问题

一如既往:

  • 在开始编码之前定义性能标准
  • 编写最简单的代码以正确实现目标
  • 根据指定的标准测试性能
  • 如果性能不令人满意,请分析您的应用程序,找出最大的瓶颈在哪里
  • 解决瓶颈,只有在性能优势显著的情况下才失去简单性
  • 重复此操作,直到代码满足性能标准
我猜您还没有开始测试性能。你会惊讶于一台计算机能在一秒钟内完成30次的工作量