3

我正在做一项工作,我需要测量使用对象流和文本流进行读写的时间。我期待 Object Streams 比 Text Streams 快,但是,对于两种情况(读取和写入),我的结果完全相反。谁能告诉我哪个通常更快?

谢谢。

4

2 回答 2

4

Why did you think that Object streams would be faster? They have high overhead. Many people prefer other serialization mechanisms.

于 2012-05-22T23:34:22.853 回答
1

对象流携带相当多的开销,因为它们需要序列化和反序列化类信息。它们对于唯一类的数量很少的大型对象图和数组可能相当有效,但对于小消息来说却是出了名的糟糕。对象序列化还必须做大量的记账工作(例如,检测对象图中的循环并确保每个对象在有多个引用时只发送一次)

另一方面,文本流非常简单,开销很小。它们在您的测试中更快也就不足为奇了。

尽管它在很大程度上取决于您如何将数据编码为文本:对象图的一些天真的文本表示实际上比常规的 Java 对象序列化要糟糕得多。基本上,尝试以文本形式重新发明 Java 对象序列化是一个坏主意......

如果您对对象的快速高效序列化感兴趣,您还应该考虑:

  • 高级对象序列化库,例如 Goggle 的Protocol BuffersKryo
  • 高效的文本数据表示格式,如 JSON 或 Clojure s-expressions(两者都具有良好的库支持并已在该领域得到证明)
于 2012-05-23T00:27:57.817 回答