我通过类似的代码将相对较大的MatrixXf序列化为文件 - https://github.com/github188/vidy_old/blob/01c0aa4242299f7f1056edf0aa60b92177dfcfe6/3rdparty/openbr/core/eigenutils.h
当我使用Qt执行此操作时,它会根据矩阵创建一个3-30MB的文件。
如果节省空间是我的第一目标,我可以考虑做些什么?
谢谢你,
饶
答案 0 :(得分:1)
使用boost的iostream过滤来提升序列化和压缩功能,可以为您提供灵活的解决方案,文件很小。
Boost序列化的binary_archive非常紧凑,并且允许文件版本化,这可以很方便。
答案 1 :(得分:0)
独立于您正在使用的序列化,boost提供了过滤流,其工作方式与常规的istream和ostream完全相同,但是动态添加压缩。您可以简单地将示例中的流替换为已过滤的流,并且应该具有工作压缩。
http://www.boost.org/doc/libs/1_64_0/libs/iostreams/doc/classes/gzip.html
#include <fstream>
#include <iostream>
#include <boost/iostreams/filtering_streambuf.hpp>
#include <boost/iostreams/copy.hpp>
#include <boost/iostreams/filter/gzip.hpp>
int main()
{
using namespace std;
ifstream file("hello.gz", ios_base::in | ios_base::binary);
filtering_streambuf<input> in;
in.push(gzip_decompressor());
in.push(file);
boost::iostreams::copy(in, cout);
}