如果性能有问题,我应该更喜欢二进制序列化而不是ascii / text序列化吗?
有没有人在大量的数据上测试过它?
发布于 2009-06-29 13:36:52
我使用boost.serialization来存储表示查找表的矩阵和向量,以及一些内存大小约为200MB的元数据(字符串)。IIRC从磁盘加载到内存,文本归档需要3分钟,而在WinXP上使用二进制归档需要4秒。
发布于 2014-04-12 00:39:59
针对一个涉及加载包含大量(数千)嵌套归档类的大型类的问题对其进行了基准测试。
要更改格式,请使用归档流
boost::archive::binary_oarchive
boost::archive::binary_iarchive而不是
boost::archive::text_oarchive
boost::archive::text_iarchive加载(二进制)归档的代码如下所示:
std::ifstream ifs("filename", std::ios::binary);
boost::archive::binary_iarchive input_archive(ifs);
Class* p_object;
input_archive >> p_object;上述代码片段的优化的gcc构建的文件和挂起时间是:
这是从固态驱动器,没有任何流压缩。
因此,速度上的提升比文件大小建议的要大,而且使用二进制可以获得额外的好处。
发布于 2009-06-29 12:38:31
如果性能有问题,我建议您研究一下protobuf - Protocol Buffers
"Protocol Buffers" from .Net
https://stackoverflow.com/questions/1058051
复制相似问题