【发布时间】:2011-04-09 17:17:49
【问题描述】:
我们需要对具有大量继承、收缩、共享指针等的相当大的 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倍。
【问题讨论】:
-
你应该包括你的 cl 在没有序列化库的情况下需要多少内存。
-
由于在构建过程中为 每个 cpp 文件启动了一个 cl.exe,因此您应该检查哪个 cpp 文件使用的内存最多。
标签: c++ visual-studio-2008 templates serialization boost