在添加boost::serialization之后,编译大型类层次结构会消耗大量内存 我们需要对大量C++类层次结构进行序列化,继承、收缩、共享指针等。我决定使用 Boo::序列化< /代码>库。< /P>
我的问题是,在VS2008在添加boost::serialization之后,编译大型类层次结构会消耗大量内存 我们需要对大量C++类层次结构进行序列化,继承、收缩、共享指针等。我决定使用 Boo::序列化< /代码>库。< /P>,c++,visual-studio-2008,templates,serialization,boost,C++,Visual Studio 2008,Templates,Serialization,Boost,我的问题是,在VS2008cl上编译这个库时占用了超过1GB的RAM内存。我想这是由Boost中基于模板的序列化引起的。这会导致在较弱的PC上构建整个项目时出现许多问题。有趣的是,编译时间不会太长: no serialization: 15:38 [mm:ss] serialization: 17:06 [mm:ss] 我的问题是:有可能减少内存使用吗?也许编译时间更长 编辑 在编译C++/CLI项目的过程中,使用的内存会在多个文件中增加,该项目实际上使用了上述库中的序列化。在没有序列化
cl
上编译这个库时占用了超过1GB的RAM内存。我想这是由Boost中基于模板的序列化引起的。这会导致在较弱的PC上构建整个项目时出现许多问题。有趣的是,编译时间不会太长:
no serialization: 15:38 [mm:ss]
serialization: 17:06 [mm:ss]
我的问题是:有可能减少内存使用吗?也许编译时间更长
编辑
在编译C++/CLI项目的过程中,使用的内存会在多个文件中增加,该项目实际上使用了上述库中的序列化。在没有序列化的情况下,
cl.exe
在最大文件上的峰值内存约为150 MB,通常不超过80 MB。一些文件的内存使用量增加了4到8倍。我在使用boost::serialization时遇到了同样的问题。可能唯一的解决办法是将这个巨大的类拆分成更多封装的部分。对于代码中的某些类,我还编写了应用程序类和序列化程序之间的层。该层简化了要保存的数据的结构。它甚至分离了一个更大的“数据”部分,并使用libz(zip库)保存它,而不是到处使用序列化。您应该包括没有序列化库时cl占用的内存量。由于在构建过程中为每个cpp文件启动了一个cl.exe,您应该检查哪个cpp文件使用的内存最多。