数字列表的最有效(反)序列化

Posted

技术标签:

【中文标题】数字列表的最有效(反)序列化【英文标题】:Most efficient (de)serialization of lists of numbers 【发布时间】:2018-08-02 20:42:18 【问题描述】:

我目前使用this serialization library 将我的数据作为Pair<double[], Double> 保存到我计算机上的目录中。唯一被序列化的数据是数组形式的数值。

我已将超过 5 GB 的原始数字数据保存到该目录中,并且我希望不断添加更多数据。我正在尝试使系统面向未来,以更有效地存储数据(用于非常需要数据的神经网络)。

有没有比序列化Pair<double[], Double> 对象更好的方法来存储数据?我应该将所有内容保存到 .txt 或 CSV 文件吗?我需要尽我所能最大限度地减少硬盘驱动器上的内存占用并减少反序列化时间。有什么建议吗?

【问题讨论】:

【参考方案1】:

以原始形式存储它。您可以使用以下给定的记录格式:

    n: Short —> 这条记录中有多少双精度值

    后跟“n”个双精度值,每个值占用 8 个字节。第一个 n-1 吃掉了对中的数组元素,最后一个是值

您可以为此目的使用 FileOutputStream。

这将通过不存储有关配对类的不必要元数据来节省您的空间。

【讨论】:

以上是关于数字列表的最有效(反)序列化的主要内容,如果未能解决你的问题,请参考以下文章

包装的 json 属性的反序列化

剑指offer 面试37题

将 JSON 命名属性反序列化为 .Net 对象

C# JSON 将文件反序列化为对象列表失败,并将字符串转换为集合错误

序列化模块

python 序列化和反序列化