Java 对多个操作使用单ByteArrayOut/InputStream和ObjectOut/Input
我已经用Java编写了一个基本的服务器-客户机体系结构,并且正在使用可序列化类进行数据包传输。我可能在stackoverflow的一些问题中见过“tobytearray,frombytearray”函数。服务器工作并且必须实时工作,因此每秒发送的数据包几乎超过20-30个。当我读一个数据包或写一个数据包时,我序列化了这个类,这个操作的成本可能会很高,因为我不断地用它创建一个新的ObjectOutputStream和一个ByteArrayOutputStream,当你认为它在一秒钟内发生30次时,可能会影响性能。因此,我考虑在主类中创建一个静态ByteArrayOutputStream和ObjectOutputStream,这样每个数据包在序列化或反序列化它们自己时都会使用它们,这些数据包已经创建好了,所以我可以避免在一秒钟内分配30次的代价。但它会不会造成另一次性能冲击?我应该每次刷新或重置ByteArrayStream吗 当你认为它在一秒钟内发生30次时,很可能会影响性能 真的吗?你知道,计算机相当快。除非这些是真正巨大的字节数组,否则我非常怀疑这是一个问题 一如既往:Java 对多个操作使用单ByteArrayOut/InputStream和ObjectOut/Input,java,serialization,Java,Serialization,我已经用Java编写了一个基本的服务器-客户机体系结构,并且正在使用可序列化类进行数据包传输。我可能在stackoverflow的一些问题中见过“tobytearray,frombytearray”函数。服务器工作并且必须实时工作,因此每秒发送的数据包几乎超过20-30个。当我读一个数据包或写一个数据包时,我序列化了这个类,这个操作的成本可能会很高,因为我不断地用它创建一个新的ObjectOutputStream和一个ByteArrayOutputStream,当你认为它在一秒钟内发生30次时,
- 在开始编码之前定义性能标准
- 编写最简单的代码以正确实现目标
- 根据指定的标准测试性能
- 如果性能不令人满意,请分析您的应用程序,找出最大的瓶颈在哪里
- 解决瓶颈,只有在性能优势显著的情况下才失去简单性
- 重复此操作,直到代码满足性能标准