首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >提高序列化性能:文本格式与二进制格式

提高序列化性能:文本格式与二进制格式
EN

Stack Overflow用户
提问于 2009-06-29 12:34:40
回答 3查看 5K关注 0票数 9

如果性能有问题,我应该更喜欢二进制序列化而不是ascii / text序列化吗?

有没有人在大量的数据上测试过它?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-06-29 13:36:52

我使用boost.serialization来存储表示查找表的矩阵和向量,以及一些内存大小约为200MB的元数据(字符串)。IIRC从磁盘加载到内存,文本归档需要3分钟,而在WinXP上使用二进制归档需要4秒。

票数 13
EN

Stack Overflow用户

发布于 2014-04-12 00:39:59

针对一个涉及加载包含大量(数千)嵌套归档类的大型类的问题对其进行了基准测试。

要更改格式,请使用归档流

代码语言:javascript
运行
复制
boost::archive::binary_oarchive
boost::archive::binary_iarchive

而不是

代码语言:javascript
运行
复制
boost::archive::text_oarchive
boost::archive::text_iarchive

加载(二进制)归档的代码如下所示:

代码语言:javascript
运行
复制
std::ifstream ifs("filename", std::ios::binary);
boost::archive::binary_iarchive input_archive(ifs);
Class* p_object;
input_archive >> p_object;

上述代码片段的优化的gcc构建的文件和挂起时间是:

  • ascii:820MB (100%),32.2 seconds (100%).
  • binary:620MB (76%),14.7秒(46%)

这是从固态驱动器,没有任何流压缩。

因此,速度上的提升比文件大小建议的要大,而且使用二进制可以获得额外的好处。

票数 4
EN

Stack Overflow用户

发布于 2009-06-29 12:38:31

如果性能有问题,我建议您研究一下protobuf - Protocol Buffers

"Protocol Buffers" from .Net

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1058051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档