我正在做一项工作,我需要测量使用对象流和文本流进行读写的时间。我期待 Object Streams 比 Text Streams 快,但是,对于两种情况(读取和写入),我的结果完全相反。谁能告诉我哪个通常更快?
谢谢。
我正在做一项工作,我需要测量使用对象流和文本流进行读写的时间。我期待 Object Streams 比 Text Streams 快,但是,对于两种情况(读取和写入),我的结果完全相反。谁能告诉我哪个通常更快?
谢谢。
Why did you think that Object streams would be faster? They have high overhead. Many people prefer other serialization mechanisms.
对象流携带相当多的开销,因为它们需要序列化和反序列化类信息。它们对于唯一类的数量很少的大型对象图和数组可能相当有效,但对于小消息来说却是出了名的糟糕。对象序列化还必须做大量的记账工作(例如,检测对象图中的循环并确保每个对象在有多个引用时只发送一次)
另一方面,文本流非常简单,开销很小。它们在您的测试中更快也就不足为奇了。
尽管它在很大程度上取决于您如何将数据编码为文本:对象图的一些天真的文本表示实际上比常规的 Java 对象序列化要糟糕得多。基本上,尝试以文本形式重新发明 Java 对象序列化是一个坏主意......
如果您对对象的快速高效序列化感兴趣,您还应该考虑: