Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对象流与文本流-谁';快一点?JAVA_Java - Fatal编程技术网

对象流与文本流-谁';快一点?JAVA

对象流与文本流-谁';快一点?JAVA,java,Java,我正在做一项工作,我需要用对象流和文本流来测量写和读的时间。我期望对象流比文本流快,但是,对于这两种情况(读和写),我的结果正好相反。 有人能告诉我通常哪个更快 谢谢。为什么您认为对象流会更快?他们有很高的开销。许多人更喜欢其他序列化机制。对象流需要序列化和反序列化类信息,因此会带来相当大的开销。对于唯一类的数量很少的大型对象图和数组,它们可以相当有效,但对于小消息,它们的效率是出了名的差。对象序列化还必须做大量的簿记(例如,检测对象图中的周期,并确保每个对象在有多个引用时只发送一次) 另一方面

我正在做一项工作,我需要用对象流和文本流来测量写和读的时间。我期望对象流比文本流快,但是,对于这两种情况(读和写),我的结果正好相反。 有人能告诉我通常哪个更快


谢谢。

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

对象流需要序列化和反序列化类信息,因此会带来相当大的开销。对于唯一类的数量很少的大型对象图和数组,它们可以相当有效,但对于小消息,它们的效率是出了名的差。对象序列化还必须做大量的簿记(例如,检测对象图中的周期,并确保每个对象在有多个引用时只发送一次)

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

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

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

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

这取决于您发送的内容以及如何将其编码为文本。“谁在乎”?:-)在我的经验中,最大的“性能提升”之一就是使用缓冲层。在任何情况下,考虑对象流如何不同于纯文本,以及它意味着什么。序列化到类似于原BUFF之类的东西可能比两者都快。写时压缩和读时解压缩可能会加快速度。我认为在我的情况下,对象流更快,因为例如,当我从文本中读取时,我逐行读取,每次我需要使用拆分来收集对象的信息时,我认为由于不断拆分,因此速度会更慢。我不知道对象流有很高的开销,谢谢:)谢谢你的解释,很好的解释