gpt4 book ai didi

c++ - 添加boost::serialization后大类层次结构的编译消耗大量内存

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:36:20 25 4
gpt4 key购买 nike

我们需要对具有大量继承、收缩、共享指针等的相当大的 C++ 类层次结构进行序列化。我决定使用 boost::serialization 库。

我的问题是,虽然在 VS 2008 cl 上编译这个库会占用超过 1 GB 的 RAM 内存。我想这是由 Boost 中基于模板的序列化引起的。这会导致在较弱的 PC 上构建整个项目时出现许多问题。有趣的是,编译时间没那么长:

no serialization: 15:38 [mm:ss]
serialization: 17:06 [mm:ss]

我的问题是:是否可以减少内存使用量?也许编译时间更长?

编辑

在 C++/CLI 项目的编译过程中,使用内存的增加发生在多个文件中,这些文件实际上使用来自上述库的序列化。没有序列化 cl.exe 最大文件的峰值内存约为 150 MB,通常不超过 80。几个文件的内存使用增加大约 4 到 8 倍。

最佳答案

我在使用boost::serialization时遇到了同样的问题。可能唯一的解决方法是将庞大的类拆分为更多封装的部分。对于我代码中的一些类,我还在我的应用程序类和序列化器之间写了一个层。该层简化了要保存的数据的结构。它甚至分离了一个更大的“数据”部分并使用 libz(zip 库)保存它,而不是在任何地方使用序列化。

关于c++ - 添加boost::serialization后大类层次结构的编译消耗大量内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3667659/

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