gpt4 book ai didi

java - Java 序列化的效率如何?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:22:54 24 4
gpt4 key购买 nike

我们有一个类叫做 Row它代表结果集中的一行。我们需要写一个 List<Row>归档以便以后可以检索。

实现此目的的一种方法是使用 Java 的序列化支持。

我认为最好的方法是在 Row 中实现序列化类(class)。然后我们将使用 serialize List<Row>的方法| , 以便写入文件。

我想知道,这样做的效率如何?它会比简单地编写一个 CSV 文件适配器来转换我们的 List<Row> 占用更多的空间吗?反对 CSV 文件?

最佳答案

Would it take up far more space than simply writing a CSV file adapter that converts our List object to a CSV file?

这取决于行的类型,还取决于您要保存的数据的大小和其他方面1

一方面,Java 序列化协议(protocol)包括序列化中提到的每个类的元数据。这会占用大量空间。

另一方面:

  • Java 序列化每次序列化仅包含一次元数据。因此,如果您序列化同一类的大量实例,元数据成本就变得微不足道了。
  • 在 CSV 文件中,所有非文本数据都必须转换为文本。在某些情况下(例如大数、 float 、 boolean 值),文本表示将大于 Java 序列化中使用的二进制表示。

1 - 例如,随机数数组与零和一数组。第一种情况下 Java 序列化会更好,第二种情况下 CSV 会更好。


但我认为您可能在这里关注了错误的事情:

  • 除非您生成的文件很大,否则大小可能无关紧要。磁盘空间很便宜。
  • 文件在任何一种情况下都可能是可压缩的,密度较低的形式可能更可压缩。
  • 更重要的是表示是否符合目的;例如
    • 您希望它是人类可读的吗?
    • 您希望非 Java 程序(包括 shell 脚本)可以读取它吗?
    • 您是否需要担心引入类与序列化版本问题的 Java 代码更改?
    • 您想要流式传输数据吗? (写作或阅读时。)

关于java - Java 序列化的效率如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38023660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com