gpt4 book ai didi

c++ - 用于在文件格式中存储变量的字符串与二进制文件

转载 作者:行者123 更新时间:2023-11-30 01:13:53 24 4
gpt4 key购买 nike

我们的目标是使用 HDF5 作为我们的数据格式。之所以选择 HDF5,是因为它是一种类似于分层文件系统的跨平台数据格式,并且支持大量数据。

该文件将包含数组和一些参数。问题在于如何存储参数(这些参数不是由大量数据组成的),同时还要考虑文件版本控制问题 以及构建库的工作。 HDF5 中的参数可以存储为 (A) 人类可读的属性/值对或 (B) HDF5 复合数据类型形式的二进制数据。

举个例子,让我们考虑一个具有三个顶点的多边形作为参数。在情况 A 下,我们可以有一个名为 Polygon 的变量,其中包含一系列顶点的字符串表示,例如例如 (1, 2); (3, 4); (4, 1)。在情况 B 下,我们可以取而代之的是一个名为 Polygon 的变量,该变量由 [2 x 3] 矩阵组成。

我们有一些想法,但如果能得到已经从事过类似工作的人的意见就更好了。更准确地说,您能否列出 A 和 B 的优缺点,并说明在什么情况下哪个更可取?

最佳答案

作为一个不得不多次完全按照您所说的去做的人来说,基本上是正确的,但我会稍微改变重点。

  • 对于文件版本控制,文本基本上是赢家。
  • 由于您使用的是 hdf5 库,我假设序列化和解析是等效的人工操作。
  • 文本文件更便于携带。您可以以最小的风险跨代硬件传输文件。
  • 文本文件更易于人类使用。如果你想提取数据的一个子集并对其进行操作,你可以在多台计算机上使用许多程序来完成。如果您正在处理二进制数据,您将需要一个允许您这样做的程序。根据您如何看待人们使用您的数据,这会对数据的可访问性和维护成本产生巨大影响。您将能够在 excel 中使用 sed、grep 甚至编辑数据。

  • 二进制数据(对于大型数据集)的输入和输出将比文本快得多。

  • 在新的环境中使用这些二进制文件(例如在未来的科幻小说中使用 128 位小端计算机)需要一些工程。
  • 同样,如果您使用其他语言编写应用程序,则需要在应用程序之间以相同的方式处理编码。这要么意味着工程工作,要么在所有平台上都提供相同的库。纯文本这更容易......
  • 如果您希望其他人编写使用您的数据的应用程序,纯文本更简单。如果您提供二进制文件,则必须提供它们可以遵循的文件规范。使用纯文本,任何人都可以查看文件并弄清楚如何解析它。
  • 您可以压缩文本文件,因此空间问题主要是您正在处理的数据的主要问题。
  • 调试二进制数据存储比调试纯文本存储要多得多。

所以最终它在一定程度上取决于您的用例。在处理纯文本的无数工具中查看数据是否有意义?是不是只有用大数据hdf5查看器看才有意义?写纯文本会不会在时间和空间上对您造成负担?

一般来说,当我遇到这个问题时,我基本上总是做同样的事情:我以纯文本形式存储数据,直到我意识到速度问题比使用二进制文件更令人恼火,然后我切换.如果您事先不知道您是否超过了该阈值,请从纯文本开始,然后将您的界面写入您的持久层,以便以后可以轻松切换。这是一点额外的工作,由于纯文本更易于调试,您可能会收回这些工作。

关于c++ - 用于在文件格式中存储变量的字符串与二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30979389/

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