【问题标题】:C++ Boost.serialization vs simple load/saveC++ Boost.serialization 与简单的加载/保存
【发布时间】:2012-04-09 20:26:02
【问题描述】:

我是处理大量模拟数据的计算科学家,我经常发现自己在磁盘中保存/加载数据。对于简单的任务,例如向量,这通常就像将一堆数字转储到文件中一样简单。

对于更复杂的东西,生命对象等,我有保存/加载成员函数。现在,我不是计算机科学家,因此我经常在这里看到我不理解的术语(但我喜欢)。我最近遇到的其中一个主题是序列化Boost.Serialization 库。

据我了解,序列化是将对象转换为可以从 dist 保存/加载或通过网络等传输的简单过程。考虑到我最多需要将我的对象保存/加载到磁盘中/从磁盘中加载,有什么理由我应该从简单的加载/保存功能切换到Boost.Serialization?除了我已经在做的事情之外,Boost.Serialization 还能给我什么?

【问题讨论】:

    标签: c++ serialization boost


    【解决方案1】:

    该库考虑了许多从纯粹“应用”的角度来看可能不太明显的细节。

    例如,数据可移植性 WRT 大/小数字字节序、指定的数据生命周期、结构化容器、版本控制、非侵入式扩展和more。此外,它以正确的方式处理与其他 stdboost 基础架构的交互,并规定了一种代码结构方式,可以让您更轻松地进行代码维护。您会发现许多(所有 std & boost ?)容器都可以使用序列化程序。

    如果您需要与其他人共享您的数据,那么引用已发布、维护和调试的架构可能会使事情变得更容易。

    【讨论】:

    • 另外:共享指针和别名指针,所有序列化复杂性的祸根
    • @sehe: 是的,你更清楚地表达了我对pointed data life time的意图
    • 我会说“结构化容器”和“共享指针”最终都只是图,但在计算科学中肯定还会有其他图。尤其是在图形序列化中,拥有一个设计良好的库会很有帮助。
    • 我必须添加一个限定符 - 因为您从事科学计算 - 如果您希望存储/传输大量数据,boost.serialization 可能不是要走的路。它有起有落,其中之一有时是不必要的冗长。
    猜你喜欢
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 2020-09-09
    • 2014-05-13
    • 2015-03-18
    • 1970-01-01
    • 2021-03-25
    • 2012-06-29
    相关资源
    最近更新 更多