对象流与文本流 - 谁更快? Java的

时间:2012-05-22 23:30:08

标签: java

我正在做一项工作,我需要测量使用Object Streams和Text Streams编写和读取的时间。我期待Object Streams比Text Streams更快但是,我的结果恰好与两种情况(读和写)相反。 有人能告诉我哪个通常更快?

感谢。

2 个答案:

答案 0 :(得分:4)

为什么你认为对象流会更快?他们的开销很高。许多人更喜欢其他序列化机制。

答案 1 :(得分:1)

对象流带来了相当大的开销,因为它们需要序列化和反序列化类信息。它们对于大型对象图和数组来说可以合理有效,其中唯一类的数量很少,但对于小消息来说却是非常糟糕的。对象序列化还必须进行相当多的簿记(例如,检测对象图中的循环并确保每个对象在有多个引用时仅发送一次)

另一方面,文本流非常简单,开销很小。它们在测试中速度更快并不奇怪。

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

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

  • 高级对象序列化库,如Goggle的Protocol BuffersKryo
  • 高效的文本数据表示格式,如JSON或Clojure s表达式(两者都具有良好的库支持并在现场得到验证)