【问题标题】:Using Single ByteArrayOut/InputStream and ObjectOut/Input for Multiple Operations使用单个 ByteArrayOut/InputStream 和 ObjectOut/Input 进行多个操作
【发布时间】:2013-05-29 07:25:45
【问题描述】:

我已经用 Java 编写了一个基本的服务器-客户端架构,并且我正在使用可序列化的类进行数据包传输。我可能在stackoverflow的一些问题中看到了“tobytearray,frombytearray”函数。服务器工作并且必须实时工作,因此每秒发送的数据包几乎超过 20-30 个。当我读取一个数据包或写入一个数据包时,我会序列化这个类,这个操作可能会花费很多,因为我不断地用它创建一个新的 ObjectOutputStream 和一个 ByteArrayOutputStream,当你认为它在一秒钟内发生 30 次时,它可能会砍掉表现。所以我想在主类中创建一个静态的 ByteArrayOutputStream 和 ObjectOutputStream ,所以每个 Packet 在序列化或反序列化自己时都使用它们,它们已经创建了,所以我将避免在一秒钟内分配 30 次的代价。但它会导致另一个性能下降吗?我应该每次都刷新或重置 ByteArrayStream 吗?

【问题讨论】:

    标签: java serialization


    【解决方案1】:

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

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

    一如既往:

    • 在开始编码之前定义性能标准
    • 编写最简单的代码以正确实现目标
    • 根据您指定的标准测试性能
    • 如果性能不令人满意,请分析您的应用程序以找出最大的瓶颈在哪里
    • 解决瓶颈,只有在性能优势被证明显着时才失去简单性
    • 重复直到您的代码满足性能标准

    我的猜测是你还没有开始测试性能。您会惊讶于计算机在一秒钟内可以完成 30 次的工作量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-03
      • 1970-01-01
      • 1970-01-01
      • 2013-08-19
      相关资源
      最近更新 更多