gpt4 book ai didi

c++ - 非常快速的序列化。随机访问 C++

转载 作者:行者123 更新时间:2023-11-28 00:57:23 25 4
gpt4 key购买 nike

在 C++11 中,我可以使用什么来将数据快速序列化到多个文件中(为避免数据冗余,我假设我会将数据拆分到多个表中并通过其 ID 号连接它们)?

我考虑使用:

  1. 使用 fstream.read()fstream.write() 访问的简单二进制文件。
  2. 使用mmap
  3. 函数 google protobuf(如果我可以访问随机元素而不是迭代所有元素)。

所有表格将由具有以下数据类型的列组成:uint8, uint16, uint32, uint64, string.

最佳答案

快速随机访问将是这里的挑战。实现这一点的最简单方法是保持每一行的大小不变。使用 protobuf 没有简单的方法来做到这一点,除非您假设一个保守的最大大小。使用前两个选项中的任何一个都应该相对容易做到这一点(假设您对字符串的大小有合理的限制)。

但是,您可以任意地变得更复杂。使用 protobuf 可能会比简单的序列化使用更少的空间,因此您将有剩余的内存来构建索引。即使是相对较小的索引(例如,从表行号映射到每 100 行的文件偏移量)也会为您提供快速的随机访问并使用更少的空间。当然,这比简单的每行大小相同的方法要复杂得多。

关于c++ - 非常快速的序列化。随机访问 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10386999/

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